バックグラウンドワーカーのほとんどの例はforループで構成されています。しかし、私の必要条件はループを必要としません。私はbackgroundworkerを実行している次のコードを持っています。 forループを使用せずにワーカープロセスをキャンセルするにはどうすればいいですか?バックグラウンドワーカーを停止する方法
void form_DoWork(LoadingProgress sender, DoWorkEventArgs e)
{
//for (int i = 0; i < 100; i++)
//{
// System.Threading.Thread.Sleep(50);
// sender.SetProgress(i, "Step " + i.ToString() + "/100...");
// if (sender.CancellationPending)
// {
// e.Cancel = true;
// return;
// }
//}
// heavy database process
SomeClass.BulkInsert(ExportLine);
}
private void ButtonCancelClick(object sender, EventArgs e)
{
//notify the background worker we want to cancel
worker.CancelAsync();
//disable the cancel button and change the status text
buttonCancel.Enabled = false;
labelStatus.Text = CancellingText;
}
あなたは少なくともノー簡単に、することはできません。 BulkInsertは操作をキャンセルする方法を提供しないので、スレッドを中止するのに手間がかかりません。それはちょっと面倒です。 –
時間のかかる処理の進捗状況を表示するための代替手段 – arjun
何か助けてください – arjun