示例#1
0
        private static void CallBack(IAsyncResult ar)
        {
            Console.WriteLine("-------执行异步回调方法---------");
            AsyncResult re     = ar as AsyncResult;                 // IAsyncResult 接口的引用在内部是 AsyncResult 类的引用
            MyDel3      del    = re.AsyncDelegate as MyDel3;        // 通过 AsyncResult 类对象,获取委托对象
            string      result = del.EndInvoke(ar);                 // 委托对象,调用 EndInvoke 等待引用方法的完成

            Console.WriteLine("----EndInvoke完成----");               // 此时,需要注意的是:结果是新线程的结果,主线程的UI需要使用的话,还需要转一个委托
        }
示例#2
0
        private static void CallBack2(IAsyncResult ar)
        {
            Console.WriteLine("-------执行异步回调方法---------");
            Console.WriteLine("传入的参数" + ar.AsyncState as string); // 传入的参数,在回调函数中 以AsyncState(object) 形式展现,具体使用时,需要强制转换
            AsyncResult re     = (AsyncResult)ar;
            MyDel3      del    = (MyDel3)re.AsyncDelegate;
            string      result = del.EndInvoke(ar);

            Console.WriteLine("----EndInvoke完成----");
        }
示例#3
0
        private static void CallBack3(IAsyncResult ar)
        {
            Console.WriteLine("-------执行异步回调方法---------");
            MyDel3      del  = ar.AsyncState as MyDel3;                              // 一般使用时,就采用这一步即可
            AsyncResult re   = (AsyncResult)ar;
            MyDel3      del2 = (MyDel3)re.AsyncDelegate;

            Console.WriteLine("两种方法获取的委托是否是同一个:" + del.Equals(del2));
            string result = del.EndInvoke(ar);

            Console.WriteLine("----EndInvoke完成----");
        }