PDA

View Full Version : كنسل كردن اجراي background worker



omidamiry
سه شنبه 16 آبان 1391, 14:12 عصر
سلام به دوستان عزيز
نحوه كار با background worker رو بلدم وانجام ميدم
فقط يه سوال اگر كاربر دوبار كليك كنه و دوبار همزمان run بشه
به ايراد سيستمي مي خوره.
سوال ؟
كد كنسل كردن اجراي background worker رو ميخوام

يعني با يك كليك ancyrun كنم

باكليك بعدي cancell or stop كنم

tooraj_azizi_1035
سه شنبه 16 آبان 1391, 15:13 عصر
سلام

برای لغو عمل اجرا باید خاصیت Cancel رو true کنید. و سپس خاصیت CancellationPending (http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.cancellatio npending%28v=vs.95%29.aspx) رو چک کنید.

برنامه شما باید با زدن دکمه شروع خاصیت اون دکمه رو به Stop تغییر بده و بازدن Stop خاصیت Cancel رو true کنید.

بدون خاصیت Cancel:



private void buttonCancel_Click(object sender, RoutedEventArgs e)
{
if (bw.WorkerSupportsCancellation == true)
{
bw.CancelAsync();
}
}





با استفاده از خاصیت Cancel:



private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;

for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}