我正在阅读TAP白皮书,并对第22页中为实现超时而给出的示例感到困惑:
"考虑一个想要下载图像并在图像下载时禁用UI的UI应用程序.但是,如果下载时间太长,则应该重新启用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; }
}
Run Code Online (Sandbox Code Playgroud)
令我困惑的是这一行:
Bitmap bmp = await download.TimeoutAfter(3000);
Run Code Online (Sandbox Code Playgroud)
在这个逻辑中,TimeoutAfter的重点是什么?这不应该是通过调用Task.WhenAny完成的吗?它似乎正在说的是,"下载任务完成后,再给它3秒钟完成." 这是示例中的错误还是我误解了?
我正在使用VS2012和TFS2010(可能或不重要).
我似乎无法获得任何的键盘命令应该与挂起的更改窗口,你知道的,工作努力.
我已经尝试了这里列出的步骤,并且我已经尝试将键绑定到键盘对话框中列出的"CompareWith"命令.实际上似乎只执行任何操作的是File.*命令,但这些命令在打开的文件上运行,而不是Pending Changes窗口.
我已经看到像Alt- I(签到)这样的命令有效,但它们没有出现在键盘设置中.
VS2012中的新窗口是否有自己的一组键盘设置在其他地方设置?我正试图让比较,排除或撤消的只有键盘的工作流程.
更新:这真的很奇怪.我实际上可以在右键单击对话框中看到快捷键,但按下它们什么都不做.然后我尝试将其更改为和弦,我收到错误消息:"组合键(Ctrl + Shift + Q,Ctrl + Shift + Q)绑定到当前不可用的命令(Tfs.ContextPendingChangesPageExcludeChanges)"
更新2:我发现了这篇博文,其中列出了一些更多的快捷方式,但实际上并没有对各个文件进行操作.为了快速参考,这是他的清单:
Shortcut Team Explorer Page
Ctrl+' Search
Ctrl+0,H Home
Ctrl+0,P Pending Changes
Ctrl+0,M My Work
Ctrl+0,W Work Items
Ctrl+0,B Build
Ctrl+0,R Reports
Ctrl+0,D Documents
Ctrl+0,S Settings
Ctrl+0,A Web Access – team home page
F5 Refresh
Ctrl+Up Move focus to the previous visible section header
Ctrl+Down Move focus to the next visible section header …Run Code Online (Sandbox Code Playgroud)