C#/。netでマルチスレッドアプリケーションに取り組んでいます。
各スレッドに独自のフォームを作成して、問題なくアクセスしてフォームに情報を表示できるようにしたいのですが、それ
を行う方法はありますか?
Application.Run(new MyForm())を試しましたが、問題は、この関数が実行をブロックし、スレッドがその作業を実行できないことです。
3 に答える
2
これは仕様によるものです。スレッドは一度に1つのことしか実行できないため、コードがそのスレッドでUIを実行するとブロックされ、UIを実行する場合は、メッセージング構造(タイマーなど)を使用して取得する必要があります。あなたの仕事は終わりました。
適切な方法は、実際に1つのUIスレッドを持ち、他のスレッドがUIに表示される進行状況メッセージを非同期に投稿することです(BeginInvoke
たとえば、他のスレッドから安全に呼び出せるフォームを使用します)。
于 2012-07-29T22:40:31.803 に答える
1
フォームのメソッドを使用して表示することができShow
ます。フォームをメソッドを使用して表示する場合でもDialog
、ShowDialog
Dialogは他のフォームの上に表示されます。
于 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 に答える