zoukankan      html  css  js  c++  java
  • 委托的异步调用(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/
    原文链接:http://www.cnblogs.com/xuanhun/ 更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    关注我:关注玄魂的微信公众号

  • 相关阅读:
    docker仓库与网络
    docker镜像制作
    docker基础
    redis5.* 集群构建,扩容,收缩
    qt moc 文件添加失败
    两台虚拟机可以ping通 但是connect失败
    QtWidget坐标
    QT Widget 重绘
    QT获得 中文字串显示在界面上的像素宽度
    QT如何获取 含有汉字的QString 长度
  • 原文地址:https://www.cnblogs.com/xuanhun/p/1662388.html
Copyright © 2011-2022 走看看