2.异步回调检测线程结束

线程结束后调用其他函数

     private static void Main(string[] args)
        {
           //通过回调, 检测线程结束
            Func<int, string, int> a = Test;
            //倒数第二个参数为会调函数,线程结束后会调用此函数,最后个参数可以传递给回调函数数据
            a.BeginInvoke(100, "maning", OnCallBack, a);

            Console.ReadKey();
        }

        private static void OnCallBack(IAsyncResult ar)
        {
            Func<int, string, int> b = ar.AsyncState as Func<int, string, int>;
            int res = b.EndInvoke(ar);
            Console.WriteLine("子线程结束" + " 回调中取得参数" + res);
        }

        private static int Test(int i, string name)
        {
            Console.WriteLine("Test" + i + " " + name);
            //当前线程暂停100ms
            Thread.Sleep(100);
            return 100;
        }
OnCallBack方法的参数是固定的,(IAsyncResult ar


ar.AsyncState传递过来的数据,也就是main方法中的 Func<int, string, int> a


posted @ 2017-05-27 14:54  C#小白鼠  阅读(306)  评论(0编辑  收藏  举报