Los usuarios de mi aplicación escriben HTML en un control TextBox.¿Cómo puedo cancelar y reiniciar correctamente un proceso de BackgroundWorker?
Quiero que mi aplicación valide su entrada en segundo plano.
Como no deseo mejorar el servicio de validación, he intentado generar un retraso de un segundo antes de cada validación.
Sin embargo, parece que no puedo interrumpir correctamente un proceso de BackgroundWorker que ya se está ejecutando.
Mi código de Visual Basic:
Sub W3CValidate(ByVal WholeDocumentText As String) 'stop any already-running validation If ValidationWorker.IsBusy Then ValidationWorker.CancelAsync() 'wait for it to become ready While ValidationWorker.IsBusy 'pause for one-hundredth of a second System.Threading.Thread.Sleep(New TimeSpan(0, 0, 0, 0, 10)) End While End If 'start validation Dim ValidationArgument As W3CValidator = New W3CValidator(WholeDocumentText) ValidationWorker.RunWorkerAsync(ValidationArgument) End Sub
Parece que después de llamar CancelAsync de mi BackgroundWorker(), su IsBusy nunca llega a ser falsa. Se queda atascado en un ciclo infinito.
¿Qué estoy haciendo mal?
me refiero a salir del procedimiento si e.Cancelled es cierto. – Pat