C# Windows Phone在按“后退”按钮时取消异步任务
当我在应用程序中加载页面时,我会发出一系列C# Windows Phone在按“后退”按钮时取消异步任务,c#,windows-phone-7,async-await,C#,Windows Phone 7,Async Await,当我在应用程序中加载页面时,我会发出一系列WebClient.DownloadStringAsync请求。它们将执行json api调用。我注意到,如果用户在应用程序点击我的WebClient\u StringCompleted之前按下后退按钮,任务仍然完成,我希望它不要这样做。是否有方法使用OnBackKeyPress覆盖停止所有异步任务 更新: 我最后混合了下面两个答案。这是我确定的代码: WebClient VideoDetails = new WebClient();
WebClient.DownloadStringAsync
请求。它们将执行json api调用。我注意到,如果用户在应用程序点击我的WebClient\u StringCompleted
之前按下后退按钮,任务仍然完成,我希望它不要这样做。是否有方法使用OnBackKeyPress
覆盖停止所有异步任务
更新:
我最后混合了下面两个答案。这是我确定的代码:
WebClient VideoDetails = new WebClient();
id = parameter;
VideoDetails.DownloadStringCompleted += new DownloadStringCompletedEventHandler(VideoDetails_StringCompleted);
if (!cts.Token.IsCancellationRequested)
{
using (CancellationTokenRegistration ctr = cts.Token.Register(() => VideoDetails.CancelAsync()))
{
VideoDetails.DownloadStringAsync(new Uri("http://www.url.com/api/get_video_detail?id=" + VideoID));
}
}
cts是CancellationTokenSource类型的类变量
然后我可以在我的OnBackKeyPress覆盖中启动
ct.Cancel();
这将使用WebClient中的CancelAsync()方法取消所有WebClient。最近,我看了一些关于CancelationToken和进度报告的不错的教程,但适用于Windows 8应用程序。请查看,(第二个视频带有CancellationToken以停止异步工作),我认为它可能会对您有所帮助。根据以下文档: 您可以使用该方法取消异步操作 还没有完成的 你试过了吗 您可以使用和的重载之一,该重载接受并使用它取消所有挂起的操作
您可以从上的Windows Phone获取您的答案,您的答案也帮了大忙,谢谢!不幸的是,我还没有足够的代表投票