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

  • 相关阅读:
    PHP 实现无限极栏目分类
    CI 中css样式或者js样式加载不进来的情况
    php 写model层
    Struts1 中$ 没有解析的问题
    App设计相关网站
    如何知道 win10 的激活到期时间和期限等
    dev XtraMessageBox按钮显示中文
    静电的ui教程
    从零开始做UI-静电的sketch设计教室 视频教程
    SQL Server2005作业执行失败的解决办法
  • 原文地址:https://www.cnblogs.com/itjeff/p/14608263.html
Copyright © 2011-2022 走看看