我在我的代码使用线程后重新开始回来了,线程使用的函数创建:线程暂停
private void InitializeBackgoundWorkers()
{
for (int f = 0; f < maxThreads; f++)
{
listBox1.Items.Insert(0, "Starting Thread : " + (f + 1));
threadArray[f] = new BackgroundWorker();
threadArray[f].DoWork +=
new DoWorkEventHandler(backgroundWorkerFiles_DoWork);
threadArray[f].RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(backgroundWorkerFiles_RunWorkerCompleted);
threadArray[f].ProgressChanged +=
new ProgressChangedEventHandler(backgroundWorkerFiles_ProgressChanged);
threadArray[f].WorkerReportsProgress = true;
threadArray[f].WorkerSupportsCancellation = true;
}
}
而且doevent是一样的东西:
private void backgroundWorkerFiles_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
int flag = 0;
while (rowCounter < allPostingRows.Tables[0].Rows.Count && flag == 0)
{
for (int i = 0; i < maxThreads; i++)
{
if (threadArray[i].CancellationPending == true)
{
flag = 1;
threadArray[i].CancelAsync();
worker.ReportProgress(0, "Thread Paused:");
}
}
if (flag == 0)
{
//perform work here
}
}
}
而且按钮我尝试取消线程使用:
for (int i = 0; i < maxThreads; i++)
{
threadArray[i].CancelAsync();
}
我是否正确取消线程?当他们被取消我看行的列表框说线程取消,因此不会去取消代码,但一段时间后,它重新启动
谢谢
工人们是怎么开始的?所有工人都重新启动吗他们是否从头开始重新开始? – ekholm 2012-07-31 13:35:57
@PeterRitchie我减少了所有额外的代码,并且现在对它做出了很好的简单的帮助? – confusedMind 2012-07-31 18:56:27