Après avoir annulé le BackGroundWorker, dans le DoWork, le CancellationPending est vrai mais quand il arrive au RunWorkerCompleted, le CancellationPending est faux. Je ne sais pas ce que j'ai fait de mal ?
static BackgroundWorker b1;
static void Main(string[] args)
{
b1=new BackgroundWorker();
b1.DoWork += new DoWorkEventHandler(work1);
b1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(completed);
b1.WorkerSupportsCancellation = true;
b1.RunWorkerAsync("Hellow");
Console.ReadLine();
}
private static void completed(object sender, RunWorkerCompletedEventArgs e)
{
if (((BackgroundWorker)sender).CancellationPending)
Console.WriteLine("Canceled!");
else
Console.WriteLine("Result:" + e.Result);//it goes here every time
}
private static void work1(object sender, DoWorkEventArgs e)
{
((BackgroundWorker)sender).CancelAsync();
if (((BackgroundWorker)sender).CancellationPending)
{
e.Cancel = true;
}
}
A propos, comment puis-je ajouter une erreur qui se produit dans le DoWork à RunWorkerCompletedEventArgs.Error pour la montrer à l'utilisateur ?