Tut*_*rge 2 c# asynchronous winrt-xaml winrt-async windows-store-apps
我怎么知道异步(等待)操作是否已经在运行并等待应用程序中的完成.我在视图中有两个按钮,每个按钮绑定到两个不同的异步方法.如果单击button1并启动异步并等待其结果.并且在那个时候点击button2.我需要显示一条消息,即已经运行的异步方法存在,并停止执行第二个异步方法.我怎样才能实现这一目标?
存储任务并检查IsCompleted属性.
private Task pendingTask = Task.FromResult(0);
private async void Button1Click()
{
if (!pendingTask.IsCompleted)
{
//Notify the user
return;
}
pendingTask = DoSomethingAsync();
await pendingTask;
...
}
private async void Button2Click()
{
if (!pendingTask.IsCompleted)
{
//Notify the user
return;
}
pendingTask = DoSomethingElseAsync();
await pendingTask;
...
}
Run Code Online (Sandbox Code Playgroud)
正如@Peter Ritchie在评论中指出的那样,更好的想法是在异步操作挂起时禁用其他按钮.你可以考虑使用它.