【发布时间】:2014-07-06 16:58:33
【问题描述】:
考虑下面的代码
async Task<int> foo()
{
await Task.Delay(1000);
return 42;
}
...
// OPTION 1
Task t = Task.Factory.StartNew(foo,
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
t.Wait();
...
// OPTION 2
Task t = foo();
t.Wait()
问题
两种看涨期权的本质区别是什么?
在选项 1 中。假设我覆盖了默认的 TaskScheduler。对于 foo 方法中的 await - 将使用哪个 TaskScheduler?它会使用默认参数还是传递给父任务的参数?
【问题讨论】:
-
选项 2 甚至从不启动线程?
-
@Henk 它启动并执行
-
@Henk 我相信至少 Task.Delay 部分将在线程池线程上执行。
-
A Delay() 不需要(占用)线程。
标签: c# asynchronous async-await .net-4.5