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

Dem*_*sch 4 .net c# task-parallel-library

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

Task.Factory.StartNew(...).ContinueWith(...);
Run Code Online (Sandbox Code Playgroud)

我不存储两个创建的任务的引用,所以我可以确定它们不会在开始之前或执行过程中被处理吗?如果是,那么在哪里引用这些任务?

Gus*_*dor 5

Task系统在两种情况下持有对 TPL 的引用:

  1. 任务已安排
  2. 任务正在运行

完成Task和任何子任务后,引用将被丢弃。代码中的引用将按预期运行。


我相信您对垃圾收集和Dispose. 这个问题或许能让你有所启发。

析构函数、处置和终结方法之间的区别

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

你应该处理任务吗?

斯蒂芬·图布 说:

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

https://devblogs.microsoft.com/pfxteam/do-i-need-to-dispose-of-tasks/