Run默认TaskCreationOptions

Run默认TaskCreationOptions

本文介绍了在Task.Run默认TaskCreationOptions的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么对于 CreationOptions 的缺省值工作使用 Task.Run 是 DenyChildAttach ,而不是

Why the default value for CreationOptions of a Task created using Task.Run is DenyChildAttach rather than None?

有它什么与做工作,新的异步等待在C#5.0简单(由$ p $逃跑当前上下文我猜的)当前调度pventing吗?

Has it anything to do with making work with the new async and await in C# 5.0 simpler (by preventing you from escaping current scheduler of current context I guess)?

推荐答案

斯蒂芬Toub介绍了这口井in他的博客关于这个问题的。

Stephen Toub explains this well in his blog post on the subject.

有些常见的任务 S IN以并行的方式。请注意,当父工作有一个孩子,父母的完成语义微妙地改变。

Parent and child tasks are somewhat common when using Tasks in a parallel fashion. Note that when a parent Task has a child, the parent's completion semantics change subtly.

父/子任务,使用工作 S IN的异步时尚时,几乎从来没有使用过。在异步的世界里,你有一种逻辑父/子关系时,有一个异步方法调用了另一个,但它不使用父/子任务实际实现

Parent/child tasks are almost never used when using Tasks in an async fashion. In the async world, you have a sort of "logical parent/child relationship" when one async method calls another, but it is not actually implemented using parent/child tasks.

通常一个工作拟用于异步 code未预计有其完成语义变化由子任务附加到它。因此,对于 Task.Run 新缺省值是 DenyChildAttach ,其中prevents的子任务尝试连接。

Usually a Task intended for use in async code is not expecting to have its completion semantics changed by a child task attaching to it. Thus, the new default for Task.Run is DenyChildAttach, which prevents any child tasks attempting to attach.

这篇关于在Task.Run默认TaskCreationOptions的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 22:47