ここで説明する奇妙な問題があります。複数の画面を持つウィザードがあります。私の最初の画面では、XML ファイルを読み込んでおり、そのファイルが読み込まれ、その値が画面に表示/使用されています。画面の 1 つで、これらの値を変更し、Update
ボタンを押してデータを更新しています。しかし、ウィザードの最後に [完了] をクリックすると、変更した値が正しく保存されません。データのエクスポート中に変更された値が存在しないこともコードで確認しました。
しかし、本当のキックは、デバッグを開始したときに起こりました。今までは、データがエクスポートされているときだけデバッグしていました。しかし、その後、ウィザードの最初からデバッグを開始しました。デバッグ中に、Update
値を変更した後にボタンを押すと、今回は値が更新され、正しいデータがエクスポートされていることに気付きました。しかし、ランタイムでアプリケーションを実行したり、エクスポートプロセスで直接デバッグポイントを置いたりすると、変更されたデータが反映されません。
したがって、問題は、変更された値をデバッグするとエクスポートされ、実行時にはエクスポートされないことです。誰かが私にこれについて何か提案できますか?
ただし、実行時に更新される場合と更新されない場合があることに後で気付きました。しかし、デバッグすると常に更新されます。問題があれば、私は Winforms と MVP を使用しています。
編集
Thread.Sleep(2000)
また、ボタン イベント メソッドの最後に配置するとUpdate
、すべてが適切に表示され、正常に動作することも認めなければなりません。しかし、この方法は私のコードレビュー担当者に評価されておらず、この方法も私を喜ばせていません。
再編集
ボタンはUpdate
メイン スレッドを使用し、同じスレッドで値を更新します。ただし、[完了] をクリックすると、そこからメソッドが作成されBackgroundWorker
て実行されます。ExportData
私の現在の観察と知識では、そこにこれ以上の糸を見ることはできません。