1.可设置控件CheckForIllegalCrossThreadCalls属性值为false 2.void 线程名(){ if(控件.InvodeRequired){ DelegateFunction df=new DelegateFunction (线程名); Invoke(df);} else { 控件.属性=值;} } 即如果控件需要invoke就invoke线程,再执行一次,此次已经invoke了,就可以修改属性值了。
线程间操作无效: 从不是创建控件“textBox2”的线程访问它。 解决方法有两种,但是推荐第二种方法: 1、 Control.CheckForIllegalCrossThreadCalls = false; 线程开始的时候加这么一句,OK,看不到错误了~ 2、因为你这个控件是主线程创建的,它依附于创建窗体的主线程.因此,要在子线程去访问占资源的类型,我们需要跨...
线程间操作无效: 从不是创建控件的线程访问它的三种方法 如果使用多线程处理来提高 Windows 窗体应用程序的性能,则你必须确保以线程安全的方式调用控件。 访问Windows 窗体控件不是本身就线程安全的。 如果有两个或两个以上线程操作控件的状态,则可能迫使该控件处于不一致状态。 可能出现其他与线程相关的 bug,例如争用...
比如在一个窗体中的代码如下,在另一个线程中显示,隐藏窗口线程中的进度条:Public Delegate Sub VoidDelegate() '定义委托类型 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim th1 As New System.Threading.Thread(AddressOf MyThreadProc) '声明...