Windowsフォームアプリを作ろうとしています。アプリはマルチスレッドを使用し、各スレッドはメソッドを呼び出し、メイン スレッドで作成されたコントロールを更新します。Invoke を使用してコントロールを更新すると、アプリは Windows サーバー エンタープライズで動作しますが、Windows 7 64 ビットでは動作しません。Windows 7 では、インターフェースを 2 回更新した後、アプリケーションは何もしなくなります。何が問題なのかわかりません。複数のスレッドとタスク(Task.Factory.StartNew()
)を試してみましたが、同じ結果が得られました(コントロールを2回更新します)。エラー メッセージはありません。ありがとうございました。
編集:CallMethod()
私はWCFを呼び出して、応答を待っています
。WCF呼び出しは最初の2つのスレッドで何かを返しているようですが、残りはそうではありません...
コード:
主な方法:
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();
}
呼び出し方法:
private string CallMethod()
{
try
{
//calling a webservice
string message = .....
if (txtResult.InvokeRequired)
{ txtResult.Invoke((MethodInvoker)(() => txtResult.AppendText(message))); }
catch
{throw;}
}