- PR -

クラス内部でサブスレッドより非同期でイベントを発生させる方法

投稿者投稿内容
TASU
会議室デビュー日: 2006/08/04
投稿数: 7
投稿日時: 2006-08-11 16:49
Hongliangさん、回答ありがとうございます。

引用:

スレッドアパートメントの問題でしょう。


さっと調べてみましたが、解決方法がわかりませんでした。もう少し勉強してみます。


引用:

……が、そもそもなぜ別スレッドでウィンドウを開けなければならないのか良く分からない……。
GUI スレッドは一つでいいと思うんですけどねー。


UdpClientで受信したデータを、ShowDialogで開いたウィンドウに出力させています。開いたウィンドウを
閉じる前に次のデータが飛んできた場合、またすぐに受信し、ウィンドウ出力させたいからです・・・。

(という回答であっていますでしょうか?自分では、何か根本的な勘違い(知識不足)であるような気がします。)

もし、おかしなことを言っていたらご指摘、改善策などをいただきたいです。

よろしくお願いします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-08-11 17:48
別に複数のフォームを表示するからといってそれぞれを別スレッドにしなければ操作できないわけじゃありません。
別スレッドにすべきはネットワーク操作の方ですね。
受信したときに Show させればいいんじゃないですか?(別スレッドで受信したのなら Show の呼び出しに Control.Invoke が必要ですが)
ここで Show したのが閉じられたときに次のを開きたいのなら、Closed イベントにでも次フォームを Show するメソッドを引っ掛ければ良いですし。

// 普段は NotifyIcon オンリーってアプリだと受信時の Invoke にちょっと困るな。

スキルアップ/キャリアアップ(JOB@IT)