根据MSDN的说法:
你可以使用AttachedToParent选项来表达结构化任务并行性,因为父任务隐式地等待所有子任务完成。
所以我有这段代码:
我想知道为什么时间是0而不是1000。
你可以使用AttachedToParent选项来表达结构化任务并行性,因为父任务隐式地等待所有子任务完成。
所以我有这段代码:
public async Task<int> GetIntAsync()
{
var childTask = Task.Factory.StartNew(async () =>
{
await Task.Delay(1000);
},TaskCreationOptions.AttachedToParent);
return 1;
}
public async Task<ActionResult> Index()
{
var watch = Stopwatch.StartNew();
var task = GetIntAsync();
var result = await task;
var time = watch.ElapsedMilliseconds;
return View();
}
我想知道为什么时间是0而不是1000。
async
方法中使用StartNew()
,因为它对它们的支持不好。相反,你应该使用Task.Run()
(虽然它不支持AttachedToParent
)。 - svick