码迷,mamicode.com
首页 > 其他好文 > 详细

关于事件Event的说明

时间:2017-08-25 13:51:44      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:style   注册   star   console   结束   datetime   private   invoke   void   

经测试,事件本身是同步的,事件注册的方法也是同步依次执行。并不能异步执行。当注册方法自身为异步方法时,产生异步的效果。

MSDN中提到的使用基于事件的异步模型进行多线程编程也不是想象中那么简单(自动异步执行)。
下面的例子中,同步方法是依次执行的,事件也在同步方法执行完毕后结束,异步启动时刻也是同步的。
调用方法为 new demo().DemoTest();
public class demo
{
    public delegate void DemoEventHandler();
    public event DemoEventHandler eve;
    public void DemoTest()
    {
        DemoEventHandler sync = new DemoEventHandler(SyncFunc);
        DemoEventHandler sync2 = new DemoEventHandler(SyncFunc2);
        DemoEventHandler asyc = new DemoEventHandler(AsycFunc);
        eve += sync;
        eve += sync2; 
        eve += asyc; 
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") +" event start.");
        eve();
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " event end.");
    }
    private void SyncFunc()
    {
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " sync start.");
        System.Threading.Thread.Sleep(1000);
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " sync end.");
    }
    private  void SyncFunc2()
    {
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " sync2 start.");
        System.Threading.Thread.Sleep(2000);
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " sync2 end.");
    }
    private void AsycFunc()
    {
        System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " asyc start.");
        DemoEventHandler func = delegate()
        {
            System.Threading.Thread.Sleep(1000);
            System.Console.WriteLine(System.DateTime.Now.ToString("HH:mm:ss fff") + " asyc end.");
        };
        func.BeginInvoke(null, null);
    }
}

--- Lan (sunlyk@QQ.com)

关于事件Event的说明

标签:style   注册   star   console   结束   datetime   private   invoke   void   

原文地址:http://www.cnblogs.com/sunlyk/p/7427310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!