【问题标题】:Task status WaitingForActivation - what does this mean?任务状态 WaitingForActivation - 这是什么意思?
【发布时间】:2012-03-04 12:57:42
【问题描述】:

我正在通过以下方式开始 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

【问题讨论】:

    标签: c# task


    【解决方案1】:

    WaitingForActivation 是任务在调用 Start 方法和任务计划程序计划任务之间的时间。因此,直接在调用任务的 start 方法后,任务状态被设置为 WaitingForActivation 并调用 scheduler.AddWork。在这里,任务要么是调度程序(WaitingToRun),要么是立即运行。

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

    【讨论】:

    • 如何让任务立即开始?
    • 这是由于您的声明 ContinueWith。这将创建一个新任务,您将其分配给 var newTask。但是,当原始任务不会导致异常时,此任务永远不会被安排或运行。您应该首先将原始任务分配给 newTask,然后调用 newTask.ContinueWith(...., TaskContinuationOptions.OnlyOnFaulted);
    • 感谢您的回答。我目前的方式也有效。这不像永远等待。但是我按照你说的修改了代码,现在我检查我看到正在运行。虽然我没有感觉到任何速度差异。还是一样。这是关于抓取网页的。
    • 如果任务现在处于睡眠状态,它的状态是否返回到 WaitingForActivation?
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 2011-08-26
    • 2011-06-02
    • 1970-01-01
    • 2018-07-05
    • 2021-07-03
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多