を使用して、ループ内でBackgroundWorker呼び出していくつかの Web サイトをダウンロードしていました。WebClient.DownloadStringユーザーがダウンロードの途中でキャンセルできるオプションが欲しかったので、ループの途中でオンになってCancelAsyncいることがわかったときにいつでも電話しました。CancellationPending
DownloadStringしかし、関数が時々フリーズすることに気づいたので、DownloadStringAsync代わりに使用することにしました (これはすべて、で作成された他のスレッド内にありますBackgroundWorker)。そして、 を呼び出した後にループと関数を終了しなければならないことでコード全体を書き直したくないので、 をDownloadStringAsync呼び出した直後に while ループを作成しましたbool Stop。DownloadStringCompletedが呼び出されたとき、またはユーザーが操作のキャンセルを要求したとき。
さて、奇妙なことは、デバッグ バージョンで正常に動作することです。しかし、リリース 1 では、メイン スレッドであるかのように while ループでプログラムがフリーズします。