zoukankan      html  css  js  c++  java
  • C# delegate方法invoke和beginInvoke的区别

    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是使用主线程运行其代码的,并没有另起线程,可以理解为同步调用。

  • 相关阅读:
    Python 资源大全中文版
    Life is short.,You need Python
    哪些 Python 库让你相见恨晚?
    中国裁判文书网全网最新爬虫分析
    关于pycharm导入其他项目时出现找不到python无法运行的问题
    禅道项目管理软件配置及使用教程
    curl
    fusionpbx 中文 汉化
    kafka operation
    golang包管理工具——glide
  • 原文地址:https://www.cnblogs.com/itjeff/p/14608263.html
Copyright © 2011-2022 走看看