C# 关于delegate、invoke、beginInvoke的使用
发布日期:2021-05-10 10:49:24 浏览次数:22 分类:精选文章

本文共 652 字,大约阅读时间需要 2 分钟。

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#关于Invoke,BeginInvoke、委托Delegate的理解
下一篇:C# 多线程与委托ThreadStart

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月26日 04时11分40秒