2012-02-13 30 views
8

我下面任務狀態WaitingForActivation - 這是什麼意思?

var newTask = Task.Factory.StartNew(() => 
{ 
fcStartSubPageCrawl(srMainSiteURL, srMainSiteId); 
}).ContinueWith((t) => 
{ 
    var aggException = t.Exception.Flatten(); 
foreach (var exception in aggException.InnerExceptions) 
    csPages.LogException(exception.ToString()); 
}, 
TaskContinuationOptions.OnlyOnFaulted); 

首先看WPF任務,現在,當我檢查(分配到任務列表中的新任務)的任務狀態

這樣的:

if (tskLocalTaskList[i].IsCompleted == false) 

我看到那任務狀態= WaitingForActivation

這是什麼意思?爲什麼它正在等待激活?

C#4.0 WPF

回答

6

WaitingForActivation是任務所在的啓動方法的調用,並在該任務獲取任務調度計劃的時刻之間的時間。所以直接調用任務的start方法後,任務狀態將被設置爲WaitingForActivation並調用scheduler.AddWork。在這裏,任務可以是調度程序(WaitingToRun),也可以是immidiatly。

哦,這與WPF無關,任務是BCL的一部分

+1

我該如何讓任務立即開始? – MonsterMMORPG 2012-02-13 03:56:43

+2

這是由於您的聲明爲ContinueWith。這將創建一個新的任務,您將其分配給var newTask。但是,當原始任務不會導致異常時,該任務永遠不會計劃或運行。您應該先將原始任務分配給newTask,然後調用newTask.ContinueWith(....,TaskContinuationOptions.OnlyOnFaulted); – Polity 2012-02-13 04:02:41

+0

感謝您的回答。我目前的方式也正在工作。它不是永遠等待。然而,我修改了代碼,如你所說,現在我檢查我看到運行。儘管我沒有感受到速度差異。還是一樣。這是關於抓取網頁的。 – MonsterMMORPG 2012-02-13 04:12:33