【发布时间】:2013-04-17 09:55:45
【问题描述】:
我的应用程序使用后台工作程序在循环中执行一些工作。我有它,以便在每次循环迭代时,它检查取消挂起是否为真,如果是,则中断循环。好的,我的应用程序在完成当前循环迭代后停止处理。问题是我认为后台工作人员仍在运行 - 如果我单击按钮再次开始处理,我会收到一个错误提示后台工作人员正忙。
我打算处置工人,但它是在表单运行时创建的,所以如果我处置它,它就不会再开始工作了。我真正想做的是告诉后台工作人员它已完成,如果我点击“停止处理”按钮,那么当我点击开始按钮时它就可以再次开始处理了!
我打算试试这个:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (!backgroundWorker1.CancellationPending)
{
// Start processing in a background thread so the GUI remains responsive,
// pass in the name of the text file produced by
// PFDR FilenameLogic(txtLetterType.Text);
}
}
【问题讨论】:
-
您是否在等待
RunWorkerCompleted事件以启用开始处理按钮? -
“我有它,以便在每次循环迭代时,它检查取消挂起是否为真,如果是,则中断循环。”当取消挂起为真时,您是否将 DoWorkEventArgs e 参数 Cancel 属性设置为真? => e.Cancel = true;
标签: c# .net backgroundworker