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


  • 相关阅读:
    Python连接redis时要注意的点
    Python SQLAlchemy多对多外键关联时表结构
    SQLAlchemy中解决数据库访问时出现的Incorrect string value: xxx at row 484
    HDFS集群数据不均衡处理
    elasticsearch数据过期删除处理
    docker使用技巧小记
    kubeadm部署kubernetes-1.12.0 HA集群-ipvs
    k8s全栈监控之metrics-server和prometheus
    k8s小工具
    k8s集群之上游dns--dnsmasq,统一管理kubernetes的dns解析
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341839.html
Copyright © 2011-2022 走看看