zoukankan      html  css  js  c++  java
  • c#使用MethodInvoker解决跨线程访问控件

    .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIllegalCrossThreadCalls = false;可以实现访问,但是出不出错不敢保证C#跨线程访问控件运行时错误。

    使用MethodInvoker即可解决:

    原代码:

             private void btnOK_Click(object sender, EventArgs e)
             {
                 tslInfo.Text = "请稍候...";
                 Thread td = new Thread(new ThreadStart(run));
                 td.Start();
             }

             /// <summary>
             /// 线程方法
             /// </summary>
             private void run()
             {
                 this.tslInfo.Text = "就绪";
             }


    修改后:
             private void btnOK_Click(object sender, EventArgs e)
             {
                 tslInfo.Text = "请稍候...";
                 Thread td = new Thread(new ThreadStart(threadRun));
                 td.Start();
             }

             /// <summary>
             /// 原线程方法
             /// </summary>
             private void run()
             {
                 this.tslInfo.Text = "就绪";
             }

             /// <summary>
             /// 线程方法
             /// </summary>
             private void threadRun()
             {
                 MethodInvoker In = new MethodInvoker(run);
                 this.BeginInvoke(In);
             }


  • 相关阅读:
    SQL随机生成6位数字
    安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
    Windows 7 完美安装 Visual C++ 6.0
    解决js中window.location.href不工作的问题
    DataList中动态显示DIV
    Gridview、DataList、Repeater获取行索引号
    Java多jdk安装
    【CentOS】samba服务器安装与配置
    【CentOS】IBM X3650M4 IMM远程管理【转载】
    【Java】Eclipse导出jar包与javadoc
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341839.html
Copyright © 2011-2022 走看看