【发布时间】:2016-04-26 00:39:17
【问题描述】:
考虑如下代码的 sn-p:
public async Task<Bitmap> DownloadDataAndRenderImageAsync(
CancellationToken cancellationToken)
{
var imageData = await DownloadImageDataAsync(cancellationToken);
return await RenderAsync(imageData, cancellationToken);
}
此方法中的第一步是 I/O 绑定工作,第二步是计算。
当我们依赖编译器为这个异步操作生成正确的基于任务的代码时,编译器会做什么?
具体来说,它是否知道第一个是 I/O 绑定的,所以它必须使用 TaskCompletionSource<T> 类,这样线程和任务之间就没有关联,而对于第二个,它可以使用任何Run 或 StartNew 或 Start 等方法在线程池线程上调度任务?
【问题讨论】:
标签: c# .net asynchronous async-await