私のアプリケーションのユーザーは、HTML を TextBox コントロールに入力します。
アプリケーションで入力をバックグラウンドで検証する必要があります。
検証サービスに負担をかけたくないので、各検証の前に 1 秒の遅延を組み込むようにしました。
ただし、既に実行中の BackgroundWorker プロセスを正しく中断できないようです。
私のVisual Basicコード:
Sub W3CValidate(ByVal WholeDocumentText As String) '既に実行中の検証を停止します If ValidationWorker.IsBusy Then ValidationWorker.CancelAsync() '準備が整うまでお待ちください While ValidationWorker.IsBusy '100 分の 1 秒間停止します System.Threading.Thread.Sleep(New TimeSpan(0, 0, 0, 0, 10)) 終了 終了条件 '検証を開始します Dim ValidationArgument As W3CValidator = New W3CValidator(WholeDocumentText) ValidationWorker.RunWorkerAsync(ValidationArgument) サブ終了
BackgroundWorker の CancelAsync() を呼び出した後、IsBusy が False になることはないようです。無限ループに陥ります。
私は何を間違っていますか?