5
我读通过TAP Whitepaper,并感到22页,在实施超时定此示例困惑:异步CTP - 任务超时问题
“考虑一个想要下载的图像和禁用UI应用程序图片下载时的用户界面,但如果下载时间过长,则应该重新启用用户界面,并且应该放弃下载。“
public async void btnDownload_Click(object sender, EventArgs e)
{
btnDownload.Enabled = false;
try
{
Task<Bitmap> download = GetBitmapAsync(url);
if (download == await Task.WhenAny(download, Task.Delay(3000)))
{
Bitmap bmp = await download.TimeoutAfter(3000);
pictureBox.Image = bmp;
status.Text = “Downloaded”;
}
else
{
pictureBox.Image = null;
status.Text = “Timed out”;
download.ContinueWith(t => Trace(“Task finally completed”));
}
}
finally { btnDownload.Enabled = true; }
}
什么混淆我是这一行:
Bitmap bmp = await download.TimeoutAfter(3000);
什么TimeoutAfter的在逻辑这点呢?这不应该通过调用Task.WhenAny来完成吗?它看起来像是说,“下载任务完成后,再给它3秒钟完成。”这是这个例子中的错误还是我误解了它?