首页 > Windows开发 > 详细

C# delegate方法invoke和beginInvoke的区别

时间:2021-04-01 23:31:17      阅读:40      评论:0      收藏:0      [点我收藏+]

class Program
    {
        delegate void test();
        static void Main(string[] args)
        {
            test ts = new test(TestDelegate);
            ts.BeginInvoke(null,null);             //使用到委托的beginInvoke方法
            Console.WriteLine("hello");
        }

        internal static void TestDelegate()
        {
            Thread.Sleep(5000);
        }

    }

上面程序代码中使用到begininvoke方法,此时控制台会立刻输出hello字符,然后结束主程序运行。由此可知beginInvoke是在主线程之外,另起了一个线程来运行其所需的代码,可以理解为异步调用。

再看下面这点程序

    class Program
    {
        delegate void test();
        static void Main(string[] args)
        {
            test ts = new test(TestDelegate);
            ts.Invoke();     //使用到委托的invoke方法
            Console.WriteLine("hello");
        }

        internal static void TestDelegate()
        {
            Thread.Sleep(5000);
        }

    }

唯一区别就是使用到了 invoke方法,此时控制台会等待5秒,然后才输出hello字符。由此可知invoke是使用主线程运行其代码的,并没有另起线程,可以理解为同步调用。

C# delegate方法invoke和beginInvoke的区别

原文:https://www.cnblogs.com/itjeff/p/14608263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!