在写程序的时候经常要用到线程,而也经常会遇到跨线程调用控件的问题,这种情况需要用到委托。
我对委托用的不太熟,少量的使用还行,控件一多就有点乱了,并且感觉调来调去的也麻烦我发现用 System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
这个比较简单,就不检查跨线程调用的安全性了,但是这样有什么危险吗,弊端什么的。
如果没有的话,那么用这个方法多好啊,何必用委托那么麻烦呢,麻烦大家帮忙给讲讲

解决方案 »

  1.   

    呵呵, 为这个头晕过很久, 后来发现最方便的还是使用委托
    事件响应代码void _transferManager_OnTaskOver(object sender, EventArgs e)
    {
        this.Invoke((Action)delegate
                {
                btnOK.Enabled = true;
                if (_autoClose) {
                Util.Log2Txt.QueueLog("close dialog", Util.LogType.Info);
                this.Close();
                }
                });
    }控件操作代码treeView.Invoke((Action)delegate
                {
                    pareNode.Nodes.Add(tree_node);
                });
      

  2.   

     .
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  3.   

     System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; 那所有的东西都是全局性的了,所以占资源
      

  4.   

    CheckForIllegalCrossThreadCalls 这个属性的定义,就会发现它是一个static的,也就是说无论我们在项目的什么地方修改了这个值,他就会在全局起作用。
    look 这个人写的东西
    http://www.cnblogs.com/zhaotiantang/archive/2009/03/17/1414135.html
      

  5.   

    并不是全局性的东西, 就占资源, 只是这种方法有看到过, 不安全, 似乎跟新的线程机制有冲突?btw. 在水源也看到你了, 额