Я написал пример консольного приложения для тестирования фонового рабочего, используя один из примеров, размещенных здесь в Stackoverflow. У меня есть работник backgroundwork, который начинается с основного метода, но заканчивается в середине операции, если я нажимаю кнопку ввода, потому что я написал файл console.readkey в основном методе. Но я хочу, чтобы он подождал, пока фоновая работа закончит выполнение задания, а затем выйдет из приложения. Это мой код.Как подождать, когда BackgroundWorker закончит, а затем выйдет из консольного приложения
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...");
}
}
Почему вы запустили фоновый процесс Async? Кажется, вы хотите, чтобы он запускался синхронно ... –
Как запустить его синхронно .. ??? –
Возможный дубликат [Как подождать, когда BackgroundWorker отменит?] (Http://stackoverflow.com/questions/123661/how-to-wait-for-a-backgroundworker-to-cancel) –