・初期値がおかしい
ダイアログを作成した。
メンバ変数として定義。
別スレッドからアクセスする必要があったので。
ダイアログのメンバ変数がnullでなかったら(表示されていたら)、
publicのメソッドを使って表示を変更するとか、そんな感じで。
そのときの呼び出しもとのコード
-- コード->
m_dlgTest = new dlgTest(); // 生成
m_dlgTest.ShowDialog(); // ダイアログ表示
int n_ret = m_dlgTest.GetResult(); // 結果の取得
m_dlgTest = null; // nullクリア
<- コード --
なにが起きたかというと。
ダイアログクラスのメンバ変数の初期値が
前回動作時の最後の値になる・・・。
それ以外にもなんだか前回の動作内容が残っているような・・・。
これは本当に怪談ですよ。
ほとんどゾンビですよ。
むーって、Webで調べてみたら、
「ダイアログはDispose()しないと開放されません」
って、本当かよ。
完全にC#で閉じた世界でないですかい。
nullクリアの前に「.Dispose()」を入れたらきっちり直りました。
-- コード->
m_dlgTest = new dlgTest(); // 生成
m_dlgTest.ShowDialog(); // ダイアログ表示
int n_ret = m_dlgTest.GetResult(); // 結果の取得
m_dlgTest.Dispose(); // 廃棄 <- ※※重要
m_dlgTest = null; // nullクリア
<- コード --
うーん。
これからは、「.Dispose()」とか「.Close()」とかがある場合は、
どんなクラスでもnullクリアの前に実行すると誓うのでした。