View Full Version : كنسل كردن اجراي background worker
omidamiry
سه شنبه 16 آبان 1391, 15:12 عصر
سلام به دوستان عزيز
نحوه كار با background worker رو بلدم وانجام ميدم
فقط يه سوال اگر كاربر دوبار كليك كنه و دوبار همزمان run بشه
به ايراد سيستمي مي خوره.
سوال ؟
كد كنسل كردن اجراي background worker رو ميخوام
يعني با يك كليك ancyrun كنم
باكليك بعدي cancell or stop كنم
tooraj_azizi_1035
سه شنبه 16 آبان 1391, 16: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));
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.