He escrito una aplicación de consola de muestra para probar backgroundworker usando uno de los ejemplos publicados aquí en Stackoverflow. Tengo un backgroundworker que comienza con el método main pero termina en el medio de la operación si presiono enter porque escribí console.readkey en el método main. Pero quiero que espere hasta que el backgroundworker haya terminado de hacer el trabajo y luego salga de la aplicación. Este es mi códigoCómo esperar a que BackgroundWorker termine y luego salir de la aplicación de consola
class Program
{
private static BackgroundWorker worker = new BackgroundWorker();
private event EventHandler BackgroundWorkFinished;
static void Main(string[] args)
{
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.ProgressChanged += worker_ProgressChanged;
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
Console.WriteLine("Starting Application...");
worker.RunWorkerAsync();
Console.ReadKey();
}
static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Console.WriteLine(e.ProgressPercentage.ToString());
}
static void worker_DoWork(object sender, DoWorkEventArgs e)
{
Console.WriteLine("Starting to do some work now...");
int i;
for (i = 1; i < 10; i++)
{
Thread.Sleep(1000);
worker.ReportProgress(Convert.ToInt32((100.0 * i)/10));
}
e.Result = i;
}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Value Of i = " + e.Result.ToString());
Console.WriteLine("Done now...");
}
}
¿Por qué luego ejecuta el proceso de fondo Async? Parece que quieres que se ejecute sincrónicamente ... –
Cómo ejecutarlo sincrónicamente ... ??? –
posible duplicado de [¿Cómo esperar a que un BackgroundWorker se cancele?] (Http://stackoverflow.com/questions/123661/how-to-wait-for-a-backgroundworker-to-cancel) –