【VisualC# 2008】ダイアログのイベントが受け取れない。

「汎用画面.cs」があり、計算用プロセスが以下のような流れで処理を行っています。

順序1:計算用プロセス起動
順序2:計算用プロセスが汎用画面.csをShowDialogで表示(確認の用途で表示。OK、Cancelボタンあり)
順序3:OKが押されたら、計算用プロセスが、汎用画面.csをShowDialogで表示(プログレスバーの用途で表示)
順序4:計算用プロセスが計算処理実施
順序5:計算用プロセスが汎用画面.csを閉じる(プログレスバー終了)。
順序6:計算用プロセスが汎用画面.csをShowDialogで表示(メッセージ表示用。OKボタンあり)
順序7:計算用プロセスが汎用画面.csでOKボタンが押されたら処理を終了する。

順序6でOKボタンが押されたときに、汎用画面.csでOKイベントが発生しないのですが、
何故こうなるのでしょうか?OKボタンの設定はプロパティのDialogResultから行っています。

ちなみに、いろいろ考えて以下のようなコーディングを行ったところ、
動作はするようになったのですが、理屈はいまいちわかりません。

(最大文字数を越えるため動作する流れはコメント欄に記載します。)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2011/02/07 13:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:harunoharuno
    「動作する流れ」

    順序1:計算用プロセス起動
    順序2:計算用プロセスが汎用画面.csをShowDialogで表示(確認の用途で表示。OK、Cancelボタンあり)
    順序3:OKが押されたら、計算用プロセスが汎用画面表示用のプロセスを起動。
    順序4:汎用画面表示用のプロセスが、汎用画面.csをShowDialogで表示(プログレスバーの用途で表示)
    順序5:計算用プロセスが計算処理実施
    順序6:計算用プロセスが、汎用画面表示用プロセスに対し、処理終了の再開を指示(Join)をする。
    順序7:汎用画面表示用のプロセスが、汎用画面.csを閉じる(プログレスバー終了)。
    順序8:汎用画面表示用のプロセスが、汎用画面.csをShowDialogで表示(メッセージ表示用。OKボタンあり)
    順序9:汎用画面表示用のプロセスが、汎用画面.csでOKボタンが押されたら自らを終了する。
    順序10:汎用画面表示用のプロセスが終了後、計算用プロセスが終了する。

  • id:windofjuly
    うぃんど 2011/01/31 17:28:24
    おおよその検討としては「変数のスコープの問題」もしくは「オブジェクトの取得と開放タイミングの問題」だと思いますが、言葉の違いでコードの違いを読み取れと言われましても難しいですね
  • id:harunoharuno
    windofjulyさん

    コメントありがとうございます。
    後でサンプルコードを作成して貼り付けることに致します。

    もし気がつくことがありましたら
    ご指摘いただけると嬉しいです。
  • id:sayo212sayo
    コメント荒らし キタ━━(━(━(-( ( (゚∀゚) ) )-)━)━) ━━ !!!!!
     
    質問者に説教する糞ヲヤジ
    こんなヤツが回答してきたら、「不適切な回答」にチェックを入れよう!
  • id:harunoharuno
    >>windofjulyさん

    サンプルがいまいちな出来なので
    更新を怠っていたら
    流れてしまいました。申し訳ないです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません