• C#_delegate EndInvoke


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    //异步调用
    //returntype EndInvoke(ref_out_argument,AsyncWaitHandle ar)
    
    namespace Starter
    {
        public delegate int DeleageteClass(out DateTime start, out DateTime stop);
    
        class Program
        {
            static void Main(string[] args)
            {
                DeleageteClass del = MethodA;
                DateTime start;
                DateTime stop;
    
                IAsyncResult ar = del.BeginInvoke(out start, out stop, null, null);
    
                ar.AsyncWaitHandle.WaitOne();
                
                //do something else
               
               
                //EndInvoke返回一个一步结果
                int elapse = del.EndInvoke(out start, out stop, ar);
    
                Console.WriteLine("start: "+ start.ToLongTimeString());
                Console.WriteLine("stop: " + stop.ToLongTimeString());
                Console.WriteLine("elapse: " + elapse);
    
                Console.ReadLine();
            }
    
    
    
            public static int MethodA(out DateTime start,out DateTime stop)
            {
                start = DateTime.Now;
                Thread.Sleep(5000);
                stop = DateTime.Now;
                return (stop-start).Seconds;
            }
        }
    
    }
    


  • 相关阅读:
    一周随笔--15.10.06
    KVC/KVO总结
    一周随笔--15.9.28
    一周随笔--15.9.21
    CocoaPods使用中的invalid byte sequence in US-ASCII错误
    自定义TabBar
    FMDB配合sqlite使用
    常用第三方库
    LLDB编译器命令
    coreData
  • 原文地址:https://www.cnblogs.com/MarchThree/p/3720449.html
Copyright © 2020-2023  润新知