【问题标题】:Cross Theaded Calls - Many controls Heavy GUI Application after .net 1.1 2.0 upgrade- best way?Cross Theaded Calls - .net 1.1 2.0 升级后的许多控件重型 GUI 应用程序 - 最佳方式?
【发布时间】:2010-03-18 17:24:54
【问题描述】:

我最近将 .net1.1 解决方案升级到 .net2.0。 因为这是一个非常繁重的 GUI 应用程序,带有大量控件和许多更新 GUI 的多线程操作。 虽然这些操作在 .net1.1 中可以无缝运行,但升级后会引发跨线程非法操作。 考虑到需要通过这些多线程操作更新的大量网格、按钮和状态标签这一事实,我决定编写代码来检查 InvokeRequired 解决方案,但是对每个控件都这样做可能不是最好的方法它。

我想知道您是否可以提出一个更好的方法来解决它,或者提出任何基于 OOPS 的类结构,我可以编写代码以使代码看起来更好。

如果我的问题不清楚,请告诉我。

提前致谢

【问题讨论】:

    标签: user-interface .net-2.0 controls upgrade multithreading


    【解决方案1】:

    这是一篇关于您的问题的好文章:

    http://www.perceler.com/articles1.php?art=crossthreads1

    快速而肮脏的技巧是完全禁用检查:

    static class Extensions {
       public static DisableCrossThreadCheck(this Control c){
        c.CheckForIllegalCrossThreadedCalls = false;
        foreach(var ctl in c.Controls) { 
          ctl.DisableCrossThreadCheck();
        }
       }
    }
    
    (in your form): 
    this.DisableCrossThreadCheck();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多