zoukankan      html  css  js  c++  java
  • C#实现简单的委托异步调用

     delegate void textAsy();
            static void Main(string[] args)
            {
    
                textAsy t = texts;
                AsyncCallback callBack = new AsyncCallback(sendCallBack);
                t.BeginInvoke(callBack, new { timeNow= DateTime.Now.Ticks,timeStr=DateTime.Now.ToString() });
                Console.WriteLine(DateTime.Now);
                Console.Read();
            }
            public static void texts()
            {
                Thread.Sleep(1100);
                Console.WriteLine(DateTime.Now);
            }
    
            //3)在回调函数中使用StateObject
            private static void sendCallBack(IAsyncResult ar)
            {
    
                Console.WriteLine("异步状态" + ((dynamic)ar.AsyncState).timeNow + ((dynamic)ar.AsyncState).timeStr);
            }
    

      


    由于操作是异步的 我们不知道他什么时候完成 所以一般采用回调函数处理  
     delegate void textAsy();
            static void Main(string[] args)
            {
    
                textAsy t = texts;
                AsyncCallback callBack = new AsyncCallback(sendCallBack);
                t.BeginInvoke(callBack,DateTime.Now.Ticks);
                Console.WriteLine(DateTime.Now);
                Console.Read();
            }
            public static void texts()
            {
                Thread.Sleep(1100);
                Console.WriteLine(DateTime.Now);
            }
    
            //3)在回调函数中使用StateObject
            private static void sendCallBack(IAsyncResult ar)
            {
    
                Console.WriteLine("异步状态"+(long)ar.AsyncState);
            }
    

      

      

    ar.AsyncState 就是 t.BeginInvoke(callBack,DateTime.Now.Ticks);中的参数
     delegate void textAsy();
            static void Main(string[] args)
            {
    
                textAsy t = texts;
                AsyncCallback callBack = new AsyncCallback(sendCallBack);
                t.BeginInvoke(callBack, new { timeNow= DateTime.Now.Ticks,timeStr=DateTime.Now.ToString() });
                Console.WriteLine(DateTime.Now);
                Console.Read();
            }
            public static void texts()
            {
                Thread.Sleep(1100);
                Console.WriteLine(DateTime.Now);
            }
    
            //3)在回调函数中使用StateObject
            private static void sendCallBack(IAsyncResult ar)
            {
    
                Console.WriteLine("异步状态" + ((dynamic)ar.AsyncState).timeNow + ((dynamic)ar.AsyncState).timeStr);
            }
    

      

  • 相关阅读:
    【linux】——FreeBSD 建立 SSH 连接慢的解决方法
    【网络编程】——connect函数遇见EINTR的处理
    【C】——幻方算法
    【C】——实现tree命令
    【数据结构】——较规范的链表操作方法
    【网络编程】——ne-snmp开发实例1
    【linux】——cscope
    【LINUX】——如何配置宿主机和虚拟机IP在同一网段
    sort /tmp space issue
    桑梓桑榆
  • 原文地址:https://www.cnblogs.com/ProDoctor/p/6136254.html
Copyright © 2011-2022 走看看