我编写了一个打字程序,用Microsoft Visual Studio 2005编辑器做的,是用线程控制的,在.net2003中能成功运行,但是.net2005中出现错误,提示我不能跨线程调用,请问高手是怎么回事,如何处理?谢谢.

解决方案 »

  1.   

    如果在构造函数中将checkfor....(具体什么我也忘了)设置为false,那么就和vs2003一样了...在2005中,一般都用委托来实现线程间调用,具体怎么用可以查下相关资料...
      

  2.   

    if (aa.InvokeRequired)
                {
                    
                    aa.Invoke(insertCardEventHandler, pList);
                }
                else
                {            }先抛到执行线程,然后返回
      

  3.   

    再详细一点:第一:在构造函数中加上这样一句话:
    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" });
            .....
      

  4.   

    this.invoke((methodinvoker)delegate {this.label1.text="...";});