Sé que tiene 3 métodos. En mi programa tengo un método para enviar un mensaje. A menudo es tarde y el programa a veces no envía el mensaje en absoluto en respuesta a la presión de un botón. A veces es tan tarde como 5 segundos de lo que esperaría y el programa se congela. Quiero usar un BackgroundWorker
para enviar el mensaje como se espera y permitir que el programa se ejecute normalmente en todo momento. Tenía el código para enviar el mensaje en un manejador de botones. Ahora, ¿dónde pongo este código equivalente? Me gustaría que todo esto se maneje presionando un botón.¿Cómo utilizar un BackgroundWorker?
¿Este es el manipulador adecuado?
backgroundWorker1.RunWorkerAsync();
y en:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {}
voy a poner mi código en el controlador de botón? Y esto antes:
carga.progressBar1.Minimum = 0;
carga.progressBar1.Maximum = 100;
Carga es mi otra forma en que el ProgressBar es. ¿Cómo uso un BackgroundWorker en este escenario?
En su Button1_Click() ejemplo - ¿cómo puedo obtener los datos devueltos por el trabajador fondo de nuevo a la principal (IU) ¿hilo? –
Extraño, tengo una excepción sobre la actualización de la interfaz de usuario (barra de progreso de WPF) de mi método ProgressChanged. Además, https://stackoverflow.com/questions/9732709/the-calling-thread-cannot-access-this-object-because-a-different-thread-owns-it/43455920 parece tener un problema similar al mío, y cita la necesidad de 'Application.Current.Dispatcher.Invoke()'. ¿Alguna idea sobre esto? –