2012-02-13 10 views
8

Sto iniziando compiti WPF con la strada sotto diStato attività WaitingForActivation - cosa significa?

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); 

Ora quando posso controllare lo stato di attività

come questo (nuovi compiti assegnati alla task list):

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

sto vedendo that task status = WaitingForActivation

cosa significa? E perché è in attesa di attivazione?

C# 4.0 WPF

risposta

6

WaitingForActivation è il tempo il compito risiede tra una chiamata al metodo di avvio e il momento in cui il compito viene pianificata dallo scheduler task. Pertanto, direttamente dopo una chiamata al metodo di avvio di un'attività, lo stato delle attività viene impostato su WaitingForActivation e viene eseguita una chiamata a scheduler.AddWork. Qui, l'attività è o di pianificazione (WaitingToRun) o eseguita immidamente.

Oh, e questo non ha nulla a che fare con WPF, Tasks sono una parte del BCL

+1

come faccio a rendere il compito iniziare immediatamente? – MonsterMMORPG

+2

Ciò è dovuto alla tua dichiarazione ContinueWith. Questo crea una nuova attività che assegni a var newTask. Tuttavia, questa attività non viene mai pianificata o eseguita quando l'attività originale non risulta con un'eccezione. si dovrebbe prima assegnare l'attività originale a newTask e quindi chiamare newTask.ContinueWith (...., TaskContinuationOptions.OnlyOnFaulted); – Polity

+0

grazie per la risposta. anche il mio modo attuale funzionava. non era come aspettare per sempre. tuttavia ho modificato il codice come hai detto e ora controllo che vedo correre. anche se non ho sentito alcuna differenza di velocità. sempre lo stesso. questo riguarda la scansione di pagine Web. – MonsterMMORPG