zoukankan      html  css  js  c++  java
  • 异步委托 无觉

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace AnsyTestApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Action actInt=TestVote;
                //foreach (Action item in actInt.GetInvocationList())
                //{
                //    item();
                //}
    
               // DeleteGateTest();
               // WaitHandDelegateTest();
                AnsyCallBackTest();//异步回调条件是必须是主线程一直 存在才可以执行 回调函数否则不执行
    
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine("等待执行异步回调的方法");
                    Thread.Sleep(100);
                }
            }
            public delegate int AsyTestDelegate(int t1, int t2);
            /// <summary>
            /// 异步委托投票执行
            /// </summary>
            static void DeleteGateTest() 
            {
                AsyTestDelegate asyDelegate = TaskReturnTest;
                IAsyncResult ar = asyDelegate.BeginInvoke(11, 22,null, null);
                while (!ar.IsCompleted)
                {
                    ///如果异步委托没有结束任务就一直执行这里
                    ReturnConsole("异步委托还没有完成");
                    Thread.Sleep(50);
                }
                int result = asyDelegate.EndInvoke(ar);
                ReturnConsole(result);
            }
    
            /// <summary>
            /// 等待句柄异步委托(可以设置过期时间)
            /// </summary>
            static void WaitHandDelegateTest() 
            {
                AsyTestDelegate dl = TaskReturnTest;
                IAsyncResult ar = dl.BeginInvoke(33, 44, null, null);
                ReturnConsole("等待句柄异步操作");
                while (!ar.IsCompleted)
                {
                    ReturnConsole("等待ing");
                    if (ar.AsyncWaitHandle.WaitOne(1000,false))
                    {
                        ReturnConsole("等到异步委托执行完毕了");
                        break;
                    }
                }
                int result = dl.EndInvoke(ar);
                ReturnConsole(result);
            }
    
            /// <summary>
            /// 异步回调委托
            /// </summary>
            static void AnsyCallBackTest() 
            {
                AsyTestDelegate dl = TaskReturnTest;
                IAsyncResult ar = dl.BeginInvoke(55, 66, AnsyDelegateComplete, dl);
            }
    
            /// <summary>
            /// 异步回调调用方法
            /// </summary>
            /// <param name="ar"></param>
            static void AnsyDelegateComplete(IAsyncResult ar) 
            {
                if (ar==null)
                {
                    ReturnConsole("ar is null");
                }
                AsyTestDelegate dl = ar.AsyncState as AsyTestDelegate;
                Trace.Assert(dl != null, "Invalid object type");
                int result = dl.EndInvoke(ar);
                ReturnConsole(result);
            }
    
            static int TaskReturnTest(int da,int ms) 
            {
                ReturnConsole("TaskReturnTest Start");
                Thread.Sleep(TimeSpan.FromSeconds(2));
                ReturnConsole("TaskReturnTest Completed");
    
                return ++da;
            }
    
            /// <summary>
            /// 闲的蛋疼的封转
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="tmsg"></param>
            static void ReturnConsole<T>(T tmsg) 
            {
                Console.WriteLine(tmsg);
            }
    
            static void Test(string a1){ }
            static void TestVote() 
            {
                Console.WriteLine("TestVote ass");
            }
        }
    }

    各有千秋

  • 相关阅读:
    scrapy怎么设置带有密码的代理ip base64.encodestring不能用 python3.5,base64库里面的encodestring()被换成了什么?
    ace模板dataTables_length控制是否显示分页
    Django AUTHENTICATION_BACKENDS
    Django自定义User模型和登录验证
    一个简单的django user.is_authenticated问题
    PHP函数(四)-变量函数
    PHP函数(三)-递归函数
    Python多进程
    Python多线程-生产者消费者模型
    Python多线程-队列
  • 原文地址:https://www.cnblogs.com/LiMin/p/3046348.html
Copyright © 2011-2022 走看看