我有一组子任务,它们执行一个方法,一旦作业完成,我会收到一个通知并结束。现在我希望他们再次重新开始相同的工作,没有任何麻烦。这怎么可能?
这就是我创建任务数组并使用任务完成的方式:
public void Start()
{
this.totalRangePerThread = ((this.endRange - this.startRange) / this.subTasks.Length);
for (int i = 0; i < this.subTasks.Length; ++i)
{
var copy = startRange;
this.subTasks[i] = new Task(() => searchItem(copy, this.totalRangePerThread), this.token, TaskCreationOptions.LongRunning);
this.startRange = this.startRange + this.totalRangePerThread;
}
//start tasks
for (int taskIndex = 0; taskIndex < this.subTasks.Length; ++taskIndex)
{
this.subTasks[taskIndex].Start();
}
Task.Factory.ContinueWhenAll(this.subTasks, completedTasks =>
{
//write it onto the the activitylog
if (Form1.Instance != null)
{
Form1.Instance.BeginInvoke((MethodInvoker)delegate
{
Form1.Instance.AddItemtoActivityLog("Search Completed!");
});
}
});
}
我应该再次调用该Start()
方法还是有一种机制可以神奇地重新启动子任务?