我有一個執行方法的子任務數組,一旦作業完成,我得到一個通知並結束。現在我希望他們再次重新開始相同的工作,沒有任何麻煩。這怎麼可能?完成後重新啓動陣列中的所有任務
這是我如何創建任務陣列,並與任務完成的工作:
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()
方法還是有,只是奇蹟般地重新啓動子任務的機制?
一個簡單的調用start()不會傷害太大,:) – David
@大衛,這是我的第一張照片吧。但它沒有按預期工作。 – faizanjehangir
嘗試Task.WaitAll(),然後調用start(); – David