委托

 

1、Func异步执行

public int Add(int a,int b)
        {
            System.Threading.Thread.Sleep(5000);
            return a + b;
        }
        public void AyscAdd(int a,int b,Action<int> callbackAction)
        {
            Func<int> func = () => {
                return Add(a,b);
            };
            func.BeginInvoke((t)=> {
                var r = func.EndInvoke(t);
                callbackAction.Invoke(r);
            },null);
        }
        public int SyncAdd(int a,int b)
        {
            return Add(a,b);
        }
        public void Action()
        {
            Console.WriteLine("同步调用开始=>");
            int a = SyncAdd(1, 2);
            Console.WriteLine("同步调用结束:" + a);

            Console.WriteLine("--------------------------");

            Console.WriteLine("异步调用开始=>");
            AyscAdd(3, 4, (result) =>
            {
                Console.WriteLine("异步调用结果:" + result);
            });
            Console.WriteLine("异步调用结束");
            Thread.Sleep(1000*10);
            Console.ReadLine();
        }

 2、Func同步

public void AyscAdd(int a,int b,Action<int> callbackAction)
        {
            Func<int> func = () => {
                return Add(a,b);
            };
            //func.BeginInvoke((t)=> {
            //    var r = func.EndInvoke(t);
            //    callbackAction.Invoke(r);
            //},null);
            var r=func();
            callbackAction(r);
        }

 

posted @ 2018-05-04 16:05  wjl910  阅读(71)  评论(0)    收藏  举报