当使用从Task Parallel Library派生的API和类时,开发人员何时需要关注垃圾回收的影响?虽然Can .NET Task instances go out of scope during run?给人一种安全感,认为不需要担心任务是否在作用域内,但是该问题似乎仅限于在线程池上运行的任务,在那里它们由线程池rooted。但是,如果我正确理解此MSDN博客文章,则来自TaskCompletionSource的任务不是同样被rooted的,因此这个问题的建议并不普遍适用。
直接使用TaskCompletionSource是唯一需要关注的时间吗?然而,在使用API时,您不知道Task来自何处。那么,如果提供的Task来自非rooted源(如TaskCompletionSource),您是否需要担心存储延续的引用?
考虑到任务是否rooted(异步I/O任务是否rooted?)似乎很快变得不方便和复杂。我很难找到有关此主题的信息,但这是一个足够受欢迎的库,我觉得我不应该阅读反编译的源代码来确定是否需要担心与垃圾回收器发生竞争条件,因此我认为我必须遗漏或误解了某些东西。
直接使用TaskCompletionSource是唯一需要关注的时间吗?然而,在使用API时,您不知道Task来自何处。那么,如果提供的Task来自非rooted源(如TaskCompletionSource),您是否需要担心存储延续的引用?
考虑到任务是否rooted(异步I/O任务是否rooted?)似乎很快变得不方便和复杂。我很难找到有关此主题的信息,但这是一个足够受欢迎的库,我觉得我不应该阅读反编译的源代码来确定是否需要担心与垃圾回收器发生竞争条件,因此我认为我必须遗漏或误解了某些东西。