zoukankan      html  css  js  c++  java
  • 利用委托解决多线程中“不是此控件创建的线程”的问题

    在C#WINDOWS创建多线程处理遇到“不是此控件创建的线程”的问题,虽然网上有人已给出解决方法,并且我也是按此方法解决,不过我感觉还是有必要记录一下,嘿嘿!

    主要解决步骤是:

    首先创建delegate委托与控件的赋值方法,有多少个控件需要,则创建多少个委托,例,我有两个控件需在另一个事件中被使用,则创建两个委托,代码如下:

        //建立委托
            delegate void setLblStr(string str);

            //设置LABLE控件的TEXT值
            void SetLblStr(string str)
            {
                this.lblDown.Text = str;
                this.lblDown.Update();
            }

            //建立委托
            delegate void setTxtStr(String str);

            //设置TEXT控件的TEXT值
            void SetTxtStr(String str)
            {
                txtUrls.Text = str;
                txtUrls.Update();
            }

    然后在使用线程的事件中调用Invoke方法来调用委托实现,如下代码:

    //创建委托实例,把要处理的方法传入委托则OK了

    setLblStr sl = new setLblStr(SetLblStr);

    //调用Invode()方法调用委托,并传参入委托;
    this.Invoke(sl, "下载中,请稍候..........");

    //创建委托实例,把要处理的方法传入委托则OK了

     setTxtStr st1 = new setTxtStr(SetTxtStr);

    //调用Invode()方法调用委托,并传参入委托
    this.Invoke(st1, temp.ToString());//temp是定义好的stringBuilder对象

    OK,问题处理完成,再哪要处理就直接调用委托处理就行了,嘿嘿!

  • 相关阅读:
    package.json与package-lock.json的区别
    ES6(一) let和const
    JSON对象的代码中不能有注释语句
    详解webpack4打包--新手入门(填坑)
    解决“webpack不是内部或外部命令”(基于webpack4.X)
    解决“npm不是内部或外部命令“
    静态页之间传值
    详解animate.css动画插件用法
    基于PIL模块创建验证码图片
    python中单下划线的变量
  • 原文地址:https://www.cnblogs.com/panjun/p/2369681.html
Copyright © 2011-2022 走看看