2011-06-16 15 views
10

Recuerdo que hace muchos años (en 2005) estaba usando BackgroundWorker en mi código sin utilizar un componente visual, pero no recuerdo cómo (desafortunadamente soy muy olvidadizo y me olvido de todo muy pronto después de dejar de usarlo). eso). Tal vez estaba extendiendo la clase BackgroundWorker. ¿Puede vincular un buen ejemplo de uso de BackgroundWorker de esta manera?¿Puede vincular un buen ejemplo de uso de BackgroundWorker sin colocarlo en un formulario como componente?

+2

búsqueda rápida -> MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx#Y2337 (busque FibonacciForm) – manji

+3

¡Es solo una clase como cualquier otra, puede crear una instancia en su código y luego trabajar con ella. Esta pregunta básicamente tiene su respuesta: http://stackoverflow.com/questions/3767827 –

+0

La forma en que funciona puede olvidarse con bastante facilidad (especialmente qué métodos funciona en el hilo principal y cuáles no), pero fácil de actualizar en unos minutos. – CharithJ

Respuesta

32

This artículo explica todo lo que necesita con claridad.

Éstos son los pasos mínimos en el uso de BackgroundWorker:

  1. Instantiate BackgroundWorker y controlar el evento DoWork.
  2. Llamar a RunWorkerAsync, opcionalmente con un argumento de objeto.

Esto luego lo pone en movimiento. Cualquier argumento pasado a RunWorkerAsync se reenviará al controlador de eventos de DoWork, a través de la propiedad Argument del argumento del evento. He aquí un ejemplo:

class Program 
{ 
    static BackgroundWorker _bw = new BackgroundWorker(); 

    static void Main() 
    { 
    _bw.DoWork += bw_DoWork; 
    _bw.RunWorkerAsync ("Message to worker"); 
    Console.ReadLine(); 
    } 

    static void bw_DoWork (object sender, DoWorkEventArgs e) 
    { 
    // This is called on the worker thread 
    Console.WriteLine (e.Argument);  // writes "Message to worker" 
    // Perform time-consuming task... 
    } 
} 
+7

excelente enlace, pero la respuesta es mejor con las comillas y el código apropiados. –

+2

@Samuel Neff: ¡Gracias! – CharithJ

+1

@ samuel-neff, gracias! – Ivan

Cuestiones relacionadas