zoukankan      html  css  js  c++  java
  • C#多线程问题整合

    一、跨进程访问组件

    错误:线程间操作无效: 从不是创建控件“XXX”的线程访问它

    解决方法:

    1:把CheckForIllegalCrossThreadCalls设置为false 

    这个方法只是不去捕获对错误线程的调用,并没有从根源上解决问题,通常代码还会继续抛出组件未被实例化的错误。

    2:委托(推荐)

    直接上代码

    public delegate void MyInvoke();
    
    private void SetBtnStatus()
     {      
         if (IsHandleCreated)
         {
             MyInvoke mi = new MyInvoke(SetStatusMethod);
             BeginInvoke(mi);
         }
         else
            SetStatusMethod();
     }
    
    public void SetStatusMethod()
    {
         btnSave.Enable = true;
    }
    

     声明一个委托方法MyInvoke

      IsHandleCreated:获取一个值,该值指示控件是否有与它关联的句柄。如果组件没有被关联,则可以直接执行方法,创建或操作组件。有被关系则委托执行方法。

       备注:在C#窗体应用程序中,子窗体执行委托方法仍然会报错,实际应该以父级的身份执行委托,代码:父级窗体.Instance.Invoke();

  • 相关阅读:
    微信小程序 生命周期
    ftp uploadFileAction(重要)
    java FTP 上传下载删除文件
    httpsession
    db2 blob EMPTY_BLOB()
    java blob
    java session getCreationTime()
    eclipse 查看源代码
    java file类
    Vue.js 和 MVVM 小细节
  • 原文地址:https://www.cnblogs.com/afei9527/p/4703979.html
Copyright © 2011-2022 走看看