2012-02-13 10 views
8

Zaczynam WPF zadań z drogi poniżejStatus zadania WaitingForActivation - co to znaczy?

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

Teraz kiedy sprawdzić status zadania

tak (nowych zadań do listy zadań):

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

widzę ten status zadania = OczekiwanieForActivation

co to znaczy? I dlaczego czeka na aktywację?

C# 4.0 WPF

Odpowiedz

6

WaitingForActivation jest razem zadanie polega między wywołaniu metody start i moment, w którym zadanie zostanie zaplanowane przez harmonogram zadań. Tak więc bezpośrednio po wywołaniu metody start zadania, status zadań jest ustawiany na WaitingForActivation i wywoływane jest wywołanie scheduler.AddWork. W tym miejscu zadaniem jest albo program planujący (WaitingToRun), albo uruchamiaj immidiatly.

Aha, i to nie ma nic wspólnego z WPF, Zadania są częścią BCL

+1

Jak mogę natychmiast rozpocząć zadanie? – MonsterMMORPG

+2

Jest to spowodowane oświadczeniem ContinueWith. Spowoduje to utworzenie nowego zadania przypisanego do zmiennej newTask. To zadanie nigdy nie zostanie zaplanowane ani wykonane, gdy oryginalne zadanie nie spowoduje wyjątku. powinieneś najpierw przypisać oryginalne zadanie do newTask, a następnie wywołać newTask.ContinueWith (...., TaskContinuationOptions.OnlyOnFaulted); – Polity

+0

dzięki za odpowiedź. mój obecny sposób też działał. to nie było jak czekanie na zawsze. jednak zmodyfikowałem kod tak, jak powiedziałeś, a teraz sprawdzam, czy działa. chociaż nie odczuwałem żadnej różnicy prędkości. wciąż tak samo. chodzi o przeszukiwanie stron internetowych. – MonsterMMORPG