C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 17 を表示中)
■6840 / )  Re[10]: 別スレッドでShowDialogしたフォームのクローズ
□投稿者/ れい (57回)-(2007/08/24(Fri) 17:50:56)
No6822 (困ったちゃん さん) に返信
> 百回程度試行してみましたが、上記のコードだとフリーズすることはありませんでした。
> しかし原コードでも、ObjectDisposedExceptionがキャッチされずにフリーズしていたので、
> 果たして『それで万全なのかが確信できない』というわけです。
> 必ず例外を投げてくれるのなら(エレガントとは言えませんけど^^;)安心なのですが。

投げる側のスレッドがフラグをチェックしてInvokeメソッドに入って内部で実際にメッセージを投げるまでの間に、
受ける側のスレッドがClosingに入ってそのままWM_DESTROY(Close)まで全部処理できることは
たぶん稀ですので、100回程度ではだめでしょう。
この手の問題はメモリが足りないときとか、遅いPCを使ったりとかした場合にのみたまにエラーが出たりするので
かなり厄介です。

そもそもClosingイベントが呼ばれないであるメッセージで突然フォームが死ぬ場合もありえるので
(WM_DESTROYやWM_QUITを投げられた場合など。)
やっぱりInvokeはダメダメだと思います。

返信 編集キー/


管理者用

- Child Tree -