C#是否存储来自TPL的任务的引用

时间:2014-04-17 12:20:20

标签: c# .net task-parallel-library

让我们假设我运行了这样的代码

Task.Factory.StartNew(...).ContinueWith(...);

我没有为两个创建的任务存储参考,所以我能确定在开始或执行过程中它们不会被处理吗?如果是,那么在哪里提到这些任务?

1 个答案:

答案 0 :(得分:4)

系统在两个条件下保留对TPL Task的引用:

  1. 任务已安排
  2. 任务正在运行
  3. 完成Task和任何子任务后,该引用将被丢弃。代码中的引用将按预期运行。


    我相信你对垃圾收集和Dispose有些困惑。这个问题可能会启发你。

      

    Difference between destructor, dispose and finalize method

         

    析构函数隐式调用Finalize方法,它们在技术上是相同的。处理可用于那些对象   实现IDisposable接口......

    您应该处置任务吗?

    Stephen Toub说:

      

    没有。不要费心处理你的任务。

         

    http://blogs.msdn.com/b/pfxteam/archive/2012/03/25/10287435.aspx