Estoy escribiendo una aplicación de Windows que ejecuta una secuencia de acciones digitales de E/S repetidamente.¿Cómo "matar" al trabajador de fondo por completo?
Esta secuencia de acciones se inicia cuando el usuario haga clic en un botón de "START", y que es realizado por un trabajador de fondo en backgroundWorker1_DoWork().
Sin embargo, hay ocasiones en que me sale el "Este BackgroundWorker está actualmente ocupado ......." mensaje de error.
Estoy pensando en implementar lo siguiente en el código, mediante el uso de un bucle while para "matar" el trabajador fondo antes de iniciar otra secuencia de acción:
if (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
while (backgroundWorker1.IsBusy == true)
{
backgroundWorker1.CancelAsync();
}
backgroundWorker1.Dispose();
}
backgroundWorker1.RunWorkerAsync();
Creo que mi principal preocupación es, será el backgroundWorker1 ser "asesinado" eventualmente? Si lo hace, ¿llevará mucho tiempo completarlo?
¿Esta codificación me llevará a un ciclo infinito?
¿Por qué necesita un bucle? ¿No lo mataría una vez significa que ya no está ocupado? – Louis
Además, sería aconsejable dormir allí que sea apropiado para la aplicación. Además, ¿qué sucede si el trabajador está legítimamente ocupado? ¿Seguirías queriendo matarlo en medio de un proceso? Creo que sería más prudente detener lo que siempre está forzando al empleado de fondo a ocupar indefinidamente. – Louis