111,129
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Threading;
namespace ConsoleTest
{
class Program
{
static BackgroundWorker bw = new BackgroundWorker();
static void Main(string[] args)
{
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerAsync("Hello to worker");
Console.WriteLine("press enter in the next 5 seconds to cancel.");
Console.ReadLine();
if (bw.IsBusy)
{
bw.CancelAsync();
}
Console.ReadLine();
}
static void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Console.WriteLine("Reached " + e.ProgressPercentage + "%");
}
static void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
Console.WriteLine("You cancelled!");
}
else if (e.Error != null)
{
Console.WriteLine("Worker exception: " + e.Error.ToString());
}
else
{
Console.WriteLine("Complete - " + e.Result); // from DoWork
}
}
static void bw_DoWork(object sender, DoWorkEventArgs e)
{
Console.WriteLine(e.Argument.ToString());
for (int i = 0; i < 5; i++)
{
if (bw.CancellationPending)
{
e.Cancel = true;
return;
}
bw.ReportProgress(i * 20);
Thread.Sleep(1000);
}
e.Result = 123;
}
}