0

C#/。netでマルチスレッドアプリケーションに取り組んでいます。
各スレッドに独自のフォームを作成して、問題なくアクセスしてフォームに情報を表示できるようにしたいのですが、それ
を行う方法はありますか?
Application.Run(new MyForm())を試しましたが、問題は、この関数が実行をブロックし、スレッドがその作業を実行できないことです。

4

3 に答える 3

2

これは仕様によるものです。スレッドは一度に1つのことしか実行できないため、コードがそのスレッドでUIを実行するとブロックされ、UIを実行する場合は、メッセージング構造(タイマーなど)を使用して取得する必要があります。あなたの仕事は終わりました。

適切な方法は、実際に1つのUIスレッドを持ち、他のスレッドがUIに表示される進行状況メッセージを非同期に投稿することです(BeginInvokeたとえば、他のスレッドから安全に呼び出せるフォームを使用します)。

于 2012-07-29T22:40:31.803 に答える
1

フォームのメソッドを使用して表示することができShowます。フォームをメソッドを使用して表示する場合でもDialogShowDialogDialogは他のフォームの上に表示されます。

于 2012-07-29T22:35:20.713 に答える
0

Showメソッドを使用してスレッドからフォームを開く必要があります。また、異なるスレッドのMDI親と子など、異なるスレッドのフォーム間をリンクすることはできません。ところで、メインGUIスレッドですべてのフォームを開き、invokeを使用して他のスレッドからのデータを問題なく表示できます。このアプローチの方が、優れていると思います。ここを見てください:http://msdn.microsoft.com/en-us/library/ms951089.aspx

于 2012-07-29T22:36:12.893 に答える