任务状态 WaitingForActivation - 这是什么意思?

10
我将使用以下方法开始WPF任务:
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);

现在当我检查任务状态时,就像这样(新任务分配给任务列表):
  if (tskLocalTaskList[i].IsCompleted == false)

我看到任务状态为“WaitingForActivation”

这是什么意思?为什么它在等待激活?

C# 4.0 WPF

1个回答

8

WaitingForActivation是指任务在调用Start方法和被任务调度程序安排之间的时间。因此,在调用任务的start方法后,任务状态被设置为WaitingForActivation,并调用scheduler.AddWork方法。在此过程中,任务要么被调度程序(WaitingToRun),要么立即运行。

哦,这与WPF无关,任务是BCL的一部分。


1
如何使任务立即开始? - Furkan Gözükara
2
这是由于您的语句ContinueWith引起的。这将创建一个新的任务,您将其分配给变量newTask。然而,当原始任务不会产生异常时,此任务永远不会被安排或运行。您应该先将原始任务分配给newTask,然后调用newTask.ContinueWith(....,TaskContinuationOptions.OnlyOnFaulted)。 - Polity
谢谢回答。我的当前方式也在工作。它不是像等待永远那样。然而,我按照您所说的修改了代码,现在我检查到正在运行。虽然我没有感觉到任何速度差异。仍然一样。这是关于爬取网页的问题。 - Furkan Gözükara
1
如果任务现在处于休眠状态,它的状态会返回到“等待激活”吗? - user1025852

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接