Как дождаться завершения BackgroundWorker, а затем выйти из консоли application

Я написал образец консольного приложения для тестирования фонового рабочего, используя один из примеров, размещенных здесь, в Stackoverflow. У меня есть фоновый рабочий, который начинается с основного метода, но заканчивается в середине операции, если я нажимаю клавишу ввода, потому что я написал console.readkey в основном методе. Но я хочу, чтобы он подождал, пока фоновый рабочий завершит свою работу, а затем выйдет из приложения. Это мой код.

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...");
    }
}
18
задан abatishchev 22 September 2010 в 09:19
поделиться