2

現在のウィンドウを閉じようとすると、次を使用します。

this.Close();

ウィンドウを正常に閉じます。ただし、バックグラウンドでは、ウィンドウの操作も実行されています。つまり、ウィンドウを閉じますが、for ループなどの操作を停止できません。プロセスのために動作し続けます。

4

2 に答える 2

1

ウィンドウを閉じると、GUI スレッドにその操作を実行するように求められます。ただし、Web リクエストなどの別のスレッドで実行されるプロセスや、その他の非同期操作は、独自のスレッドで実行されます。

別のスレッドでループを実行している場合、ウィンドウを閉じても終了しない可能性は十分にあります。

WPF はその操作の多くを非同期で実行するため、ウィンドウのコードを調べて、明示的な終了が必要なものがないかどうかを確認します。

さらに、ループを異常終了させるのは得策ではありません。ループを実行している場合は、ウィンドウを終了したときにループを停止するブレーク条件を配置します。

于 2013-04-05T10:26:00.017 に答える
1

ライブラリにこのメカニズムが組み込まれているとは思えません。誤ってリリースされたリソースに関する問題を要求しています。代わりに、実行時間の長いプロセスにガードを追加します。

if(isClosing) break;

次に、イベント ハンドラで を設定isClosingします。trueClosing

于 2013-04-05T10:25:15.367 に答える