c#中Invoke方法

c#中Invoke方法invoke方法的初衷是为了解决在某个非某个控件创建的线程中刷新该控件可能会引发异常的问题。说的可能比较拗口,举个例子:主线程中存在一个文本控件,在一个子线程中要改变该文本的值,此时会有可能引发异常。为了避免该问题,需要在子线程中使用invoke方法来封装刷新文本内容的函数。Invoke或者BeginInvoke去调用,两者的区别就是Invoke会导致工作线程等待,而BeginIn

大家好,又见面了,我是你们的朋友全栈君。

invoke方法的初衷是为了解决在某个非某个控件创建的线程中刷新该控件可能会引发异常的问题。说的可能比较拗口,举个例子:主线程中存在一个文本控件,在一个子线程中要改变该文本的值,此时会有可能引发异常。

为了避免该问题,需要在子线程中使用invoke方法来封装刷新文本内容的函数。Invoke 或者 BeginInvoke 去调用,两者的区别就是Invoke 会导致工作线程等待,而BeginInvoke 则不会

using System.Threading;

       public delegate void MyInvoke(string str);//invoke方法创建委托
        private void btnStartThread_Click(object sender, EventArgs e)
        {

            Thread thread = new Thread(new ThreadStart(DoWord));
            thread.Start();
        }
        public void DoWord()
        {            
            MyInvoke mi = new MyInvoke(SetTxt);//实例化一个委托,并且指定委托方法
            BeginInvoke(mi,new object[]{“abc”}); //调用invoke方法           
        }

        public void SetTxt(string str)//委托对应的方法
        {

            txtReceive.Text += “invoke”;
        }

this.listView1.Invoke(new EventHandler(delegate
 {

          listView1.Items.RemoveAt(i);
  }));

或者

Invoke(new Action(()=>{

todo();

}));

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131179.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CentOS5.3+Nginx0.7.57+Postfix+Extmail邮件系统安装配置(一))

    CentOS5.3+Nginx0.7.57+Postfix+Extmail邮件系统安装配置(一))

    2021年7月31日
    74
  • bloom过滤器原理_gabor filter

    bloom过滤器原理_gabor filterBloomFilter概念和原理焦萌2007年1月27日 BloomFilter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。BloomFilter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(falsepositive)。因此,BloomFilter不适

    2025年8月9日
    3
  • Android Protobuf应用及原理「建议收藏」

    Android Protobuf应用及原理

    2022年3月13日
    46
  • 三次握手四次挥手例题(tcp三次握手原理)

    在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。三次握手当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答:首先很多人会先讲下握…

    2022年4月10日
    115
  • 什么软件可以激活成功教程网址_bya意思

    什么软件可以激活成功教程网址_bya意思国内激活成功教程站点大全![http://blog.csdn.net/netxiaoyue/archive/2005/01/29/273559.aspx]国内激活成功教程站点大全!(强烈推荐)【8DD资源中心】-http://www.18dd.com/精品软件秀-http://www.ohsoft.com/163软件园-http://www.soft163.com/中华激活成功教程联盟

    2022年9月16日
    4
  • C++和Java有哪些区别

    C++和Java有哪些区别1.C++创建对象后需要在使用结束后调用delete方法将其销毁,Java有垃圾回收机制,用来监视new出来的所有对象,辨别不会再被引用的对象,然后释放内存空间2.C++可以重载操作符,Java不能重载3.当变量作为类的成员使用时,Java才确保给定默认值,以确保那些基本类型的成员变量得到初始化,但是C++没有此功能4.C++有多继承,Java只有单继承5.Java中没有sizeof(),在C++中sizeof()操作符能够告诉我们为数据项分配的字节数,因为C++中不同的数据类型在不同的机器上可能有

    2022年7月9日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号