Tho*_*mas 4 c# task-parallel-library
我想了解有什么区别Nested Task and Child Task.
var outerTask = Task.Factory.StartNew( () =>
{
var nestedTask = Task.Factory.StartNew( () =>
{
Console.WriteLine("Inside nestedTask");
});
});
A "child task" looks like this:
var parentTask = Task.Factory.StartNew( () =>
{
var childTask = Task.Factory.StartNew( () =>
{
Console.WriteLine("Inside childTask");
}, TaskCreationOptions.AttachedToParent );
});
Run Code Online (Sandbox Code Playgroud)
在这里我附上了代码.
ut似乎当我们启动任何嵌套任务时,外部任务可以在内部任务之前完成,但是在子任务的情况下总是子任务在父任务之前完成.我不确定我是对还是不对.因此,如果有人指导我何时去嵌套任务和带有示例场景的子任务,那将会很有帮助.谢谢
IMO,最好的解释是在Stephen Toub的博客文章中找到的:
...正在创建的任务作为子进程向该父进程注册,导致另外两个行为:父任务也将不会转换到已完成状态,直到其所有子进程都已完成,并且来自故障的子进程的任何异常将传播到父任务(除非父任务在完成之前观察这些异常).
微软对此进行了详尽的解释。
嵌套任务只是在另一个任务的用户委托中创建的Task实例。子任务是使用AttachedToParent选项创建的嵌套任务。一个任务可以创建任何数量的子任务和/或嵌套任务,仅受系统资源限制。以下示例显示了一个父任务,该父任务创建了一个简单的嵌套任务。
...
关于子任务与嵌套任务最重要的一点是,嵌套任务本质上独立于父任务或外部任务,而附加的子任务与父任务非常紧密地同步。
http://msdn.microsoft.com/zh-CN/library/vstudio/dd997417%28v=vs.100%29.aspx