• 从非启动线程访问控件的两种方法


    从非启动线程访问控件会出现错误:线程间操作无效: 从不是创建控件“”的线程访问它。
    目前常用的解决方法有如下两种:

    方法一:
    Control.CheckForIllegalCrossThreadCalls = false;

    这种方法只是作为保留方法,一般不用。
    方法二:
    用委托,每个控件都有个InvokeRequired的属性,判断一下是不是true,是的话进行Invoke操作。

      //建立委托
    private delegate string ReturnStrDelegate();

    private string GetNamel()
    {
         return txtName.Text.Trim();

    }

    //判断一下是不是该用Invoke,不是就直接返回

    private string ReturnName(ReturnStrDelegate del)
    {
         if (txtName.InvokeRequired)
         {
               return (string)txtName.Invoke(del);
         }
         else
         {
              return del();
         }
    }

    //调用
    string _name = ReturnName(GetName);

    ===============================================

    void Server_DataReponse(Message msg)
    {
           if (this.InvokeRequired)
           {
                this.BeginInvoke(new DataReponse(Server_DataReponse), new object[] { msg });
           }
           else
           {
                 this.txtInfo.AppendText("收到信息" + msg.ToString());
                 this.txtInfo.ScrollToCaret();
          }
    }

  • 相关阅读:
    OllyUni.dll
    系统修改利器XueTr
    dubbo+zipkin调用链监控(二)
    Kafka Manager
    简易RPC框架-SPI
    Spring Cache扩展:注解失效时间+主动刷新缓存(二)
    从头开始搭建一个Spring boot+ActiveMQ高可用分布式环境
    简易RPC框架-熔断降级机制
    简易RPC框架-代理
    转:一篇讲线上优化查 CPU的脚本
  • 原文地址:https://www.cnblogs.com/junior/p/2405832.html
Copyright © 2020-2023  润新知