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

Mon*_*RPG 9 c# task

我用下面的方式启动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);
Run Code Online (Sandbox Code Playgroud)

现在,当我检查任务状态

像这样(分配给任务列表的新任务):

  if (tskLocalTaskList[i].IsCompleted == false)
Run Code Online (Sandbox Code Playgroud)

我看到任务状态= WaitingForActivation

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

C#4.0 WPF

Pol*_*ity 6

WaitingForActivation是任务驻留在Start方法的调用和Task调度程序调度任务的时刻之间的时间.因此,在调用任务的start方法之后,将任务状态设置为WaitingForActivation并调用scheduler.AddWork.在这里,Task是调度程序(WaitingToRun)或者是immidiatly.

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

  • 这是由于您的声明ContinueWith.这将创建一个您分配给var newTask的新任务.但是,当原始任务不会导致异常时,此任务永远不会被调度或运行.你应该首先将原始任务分配给newTask,然后调用newTask.ContinueWith(....,TaskContinuationOptions.OnlyOnFaulted); (2认同)