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