我正在嘗試製作Windows窗體應用程序。該應用程序使用多線程,每個線程調用一個方法,並更新在主線程上創建的控件。我使用invoke更新控件,該應用程序在Windows服務器企業版上運行,但它在Windows 7 64位上運行。在WIndows 7上,應用程序在更新接口2次後會停止執行任何操作。我不知道什麼似乎是問題。我嘗試了多個線程和任務(Task.Factory.StartNew()
),我有相同的結果(更新控制2次)。沒有錯誤信息。 謝謝。多線程應用程序不能在Windows 7上工作
編輯: 在CallMethod()
我打電話給一個WCF並等待迴應。看來WCF調用返回的東西前兩個線程,它不是休息...
代碼:
主要方法:
for (int i = 0; i < NoThreads; i++)
{
int index = i;
Thread t = new Thread(CallMethod);
t.Name = "Thread [" + Cicle + "] Cicle [" + i + "]";
threads[i] = t;
}
for (int i = 0; i < NoThreads; i++)
{
threads[i].Start();
}
CallMethod:
private string CallMethod()
{
try
{
//calling a webservice
string message = .....
if (txtResult.InvokeRequired)
{ txtResult.Invoke((MethodInvoker)(() => txtResult.AppendText(message))); }
catch
{throw;}
}
假設txtResult.InvokeRequired後的連接是假的......什麼也沒有發生 – spender