C#写的多线程程序中,想单步调试的时候,
他总报不在这个线程内调用的控件的错误,就不能调试了!
想问问。NET中如何在多线程的程序中进行单步调试!

解决方案 »

  1.   

    自己得workthread不能调用ui thread得控件,要调用也要用控件.beginInvoke来调用。
      

  2.   

    这个法则是从mfc开始得,比较恶心,以前win32里面thread没有被划分成2块,他们封装后就这样了
      

  3.   

    vs2005出于安全考虑,不容许这样的操作,即线程间相互调用,你在线程间更新界面的操作就触犯了这一点,解决的办法有以下两个:第一:在构造函数中加上这样一句话即可:
    CheckForIllegalCrossThreadCalls = false;
    加上这句话后,线程的处理就同vs2003完全一样了,即允许线程间相互调用第二:利用委托代理来实现:
    举个很简单的例子,比如我想在线程中对窗体中的textbox进行更新,可以这样来实现,如下:        //定义一个代理
            public delegate void MyInvoke(string str);
            //更新界面的方法
            private void UpdateTextBox(string str)
            {
                textBox1.Text +=str;
            }        //在线程回调函数里需要更新界面的地方,这样操作:
            .....
            MyInvoke mi = new MyInvoke(UpdateTextBox);
            this.BeginInvoke(mi, new object[] { "i" });
            .....
    楼主可以试下,也可以上网再查下资料...