委托的异步调用(2)

简介:
2008-06-29 20:49

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace 委托的异步调用
{
    public delegate int DelegateClass(out DateTime start,out DateTime stop);//定义委托分类DelegateClass
    class Starter
    {
        static void Main(string[] args)
        {
            DelegateClass del = MethodA;//定义委托对象del
            DateTime start;
            DateTime stop;
            IAsyncResult ar = del.BeginInvoke(out start, out stop, null, null); ;// 开始委托的异步调用
          
            ar.AsyncWaitHandle.WaitOne();

            int elapse = del.EndInvoke(out start, out stop, ar);
            Console.WriteLine("starttime:{0}", start.ToString());
          Console.WriteLine("stoptime{0}",stop.ToString());
          Console.WriteLine("elapsetime:{0}", elapse.ToString());
        }
       
        public static int MethodA(out DateTime start,out DateTime stop)
        {
            start = DateTime.Now;
            Thread.Sleep(5000);
            stop = DateTime.Now;
            return (stop - start).Seconds;
        }
     }
    
}
//注:在异步操作函数完成之前调用EndInvoke方法,会阻塞对方,直到该操作完成为止,对于每个
//BeginInvoke都应该有一个EndInvoke与之对应,确认操作结果,检测异常,允许CLR对委托进行适当清理
//



本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2010/02/03/1662388.html,如需转载请自行联系原作者
相关文章
|
开发框架 安全 .NET
委托表示回调
委托表示回调
116 0
|
C# UED
艾伟_转载:C# 委托的同步调用和异步调用
  委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。   同步调用的例子: using System;using System.
929 0
|
.NET
艾伟_转载:把委托说透(2):深入理解委托
在上一篇随笔中我们通过示例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的实质。 委托在本质上仍然是一个类,我们用delegate关键字声明的所有委托都继承自System.MulticastDelegate。
1117 0
|
C# Windows
C#委托+回调详解
今天写不完,明天会接着写的,,,, 学习C#有一段时间了,不过C#的委托+回调才这两天才会用,以前只是知道怎么用.前面的一篇文章,函数指针,其实是为这个做铺垫的,说白了委托就相当于C语言中的函数指针,具体说用委托有什么好处,我也不知道,但是因为你只要学C#那么回调就一定要会,回调是委托的一种.
1035 0

热门文章

最新文章