代理的简单使用 简单的异步

 static void Main(string[] args)
        {
            //DateTime dt = DateTime.Now;
            //RemoteObject.MyObject app = new RemoteObject.MyObject();
            //Console.WriteLine(app.ALongTimeMethod(1, 2, 1000));
            //Method();
            //Console.WriteLine("用了" + ((TimeSpan)(DateTime.Now - dt)).TotalSeconds + "秒");
            //Console.ReadLine();

            DateTime dt = DateTime.Now;
            RemoteObject.MyObject app = new RemoteObject.MyObject();
            MyDelegate md = new MyDelegate(app.ALongTimeMethod);
            IAsyncResult Iar = md.BeginInvoke(1, 2, 1000, null, null);
            Method();
            if (!Iar.IsCompleted)
            {
                Console.WriteLine("没有结束");
                Iar.AsyncWaitHandle.WaitOne();
            }
            else
            {
                Console.WriteLine("结果是" + md.EndInvoke(Iar));
            }
            Console.WriteLine("用了" + ((TimeSpan)(DateTime.Now - dt)).TotalSeconds + "");
            Console.ReadLine();
        }

        private delegate int MyDelegate(int a, int b, int time);
        private static void Method()
        {
            Console.WriteLine("主线程方法开始");
            System.Threading.Thread.Sleep(3000);
            Console.WriteLine("主线程方法结束");
        }

 

posted on 2015-10-27 09:43  HOT SUMMER  阅读(184)  评论(0编辑  收藏  举报

导航