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);
             }


  • 相关阅读:
    vsftp部署和优化错误
    部署和调优 1.6 vsftp部署和优化-2
    部署和调优 1.5 vsftp部署和优化-1
    部署和调优 1.3 pureftp部署和优化-2
    Linux一些常用软件的源码安装
    SecureCrt 利用公匙登录L机取消密码登录。
    利用任务自动上传备份。
    Mysql Too Many Connections问题解决
    Linux ---pptpd部署
    Sed简单入门实例
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341839.html
Copyright © 2011-2022 走看看