私のアプリケーションのユーザーは、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 になることはないようです。無限ループに陥ります。
私は何を間違っていますか?