委托的异步调用(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,如需转载请自行联系原作者
相关文章
|
2月前
|
C#
C#一分钟浅谈:委托与事件的实现方式
本文详细介绍了C#编程中委托与事件的基础知识及应用场景。首先解释了委托的概念,包括定义与使用方法;接着介绍了事件这一基于委托的特殊类型,展示了如何在类中定义事件及跨类订阅与处理事件;最后讨论了常见问题如事件未处理异常、重复订阅及内存泄漏等,并提出了相应的解决方案。通过本文,读者将全面掌握委托与事件的使用技巧,提升应用程序的设计与开发水平。
108 7
|
开发框架 安全 .NET
委托表示回调
委托表示回调
108 0
|
C# UED
艾伟_转载:C# 委托的同步调用和异步调用
  委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。   同步调用的例子: using System;using System.
922 0
|
Web App开发 安全 C#
|
C# Windows
C#委托+回调详解
今天写不完,明天会接着写的,,,, 学习C#有一段时间了,不过C#的委托+回调才这两天才会用,以前只是知道怎么用.前面的一篇文章,函数指针,其实是为这个做铺垫的,说白了委托就相当于C语言中的函数指针,具体说用委托有什么好处,我也不知道,但是因为你只要学C#那么回调就一定要会,回调是委托的一种.
1028 0