日期:2014-05-20  浏览次数:20950 次

.NET 能建立多少个线程?为什么我建立100个就出错了。
C# code
我建立的程序是MDI程序,以下代码是在MDI子窗口执行的。为什么程序自动消息掉?什么出错了?
  
              threads = new Thread[100];
                for (int i = 0; i < threads.Length; i++)
                {
                    threads[i] = new Thread(ThreadProc);
                    threads[i].Start(this);
                }
                Thread t = new Thread(ThreadProc);
                t.Start();




        void Do()
        {
A.Text="aaaa";
        }

        void ThreadProc(Object sender)
        {
            (sender as FormRefres).Do();
        }


------解决方案--------------------
你直接在 ThreadProc方法写一个输出吧 离真理不远了
------解决方案--------------------
问题出在A.Text="aaaa";
由于文本框对象A是在主线程创建的,其他线程必须invoke创建者线程(主线程),请求主线程改写控件状态。
CheckForIllegalCrossThreadCalls =false;
这是.net早期版本的解决方案,不检测非法的跨线程调用,可以提高速度但存在一定的风险。
在后期版本中不建议使用该方案,而是使用invoke。
if(A.InvokeRequired)
{
...
}