对【委托的执行方法】的测试与理解

来源:互联网 发布:知可之伯母邪恶漫画 编辑:程序博客网 时间:2024/06/08 07:24

今天突然就想知道委托的执行过程是阻塞的还是非阻塞的,于是试了下发现是顺序阻塞的敲打


Class2:

    public class Class2    {        public delegate void TestHandler();        public event TestHandler TestEvent;        public void DoWork()        {            Console.WriteLine("Class2 DoWork");            if (this.TestEvent != null)            {                this.TestEvent();            }            Console.WriteLine("Class2 DoWork End");        }    }


Class3:

    public class Class3    {        public virtual void DoWork()        {            System.Threading.Thread.Sleep(1000);            Console.WriteLine("Class3 DoWork At {0}", DateTime.Now.ToLongTimeString());        }    }

Class4:

    public class Class4 : Class3    {        public override void DoWork()        {            System.Threading.Thread.Sleep(1000);            Console.WriteLine("Class4 DoWork At {0}", DateTime.Now.ToLongTimeString());        }    }
Class5:

    public class Class5    {        public void DoWork()        {            System.Threading.Thread.Sleep(1000);            Console.WriteLine("Class5 DoWork At {0}", DateTime.Now.ToLongTimeString());        }    }

Program:

    class Program    {        static void Main(string[] args)        {            Class2 c2 = new Class2();            Class3 c3 = new Class3();            Class3 c4 = new Class4();            Class5 c5 = new Class5();            c2.TestEvent += () =>            {                c3.DoWork();                c5.DoWork();                c4.DoWork();            };            c2.DoWork();            Console.ReadLine();        }    }

所以说基础不扎实就容易产生这种怀疑,委托本来就是把“别处的”方法“拿过来“执行,再这样测试一下就有(fei)点(chang)搞笑了。


0 0