【问题标题】:How to terminate an asynchronous function in C#如何在 C# 中终止异步函数
【发布时间】:2011-06-26 16:51:52
【问题描述】:

如何终止此方法/下载功能?

private void Download_Click(object sender, EventArgs e)
{
    WebClient webClient = new WebClient();
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
    webClient.DownloadFileAsync(new Uri("http://google.com/test.zip"), @"test.zip");

}

基本取消下载功能

【问题讨论】:

  • 阅读 MSDN 库文章的备注部分以了解该方法。

标签: c# .net windows


【解决方案1】:

这样做:webClient.CancelAsync();

【讨论】:

  • 如何从外部方法调用它?
  • @James:您需要在某处保存对 WebClient 实例的引用,而不是让它超出范围。
【解决方案2】:

使用CancelAsync,来自documentation

备注

如果操作处于挂起状态,则此方法在 底层 WebRequest。当您调用 CancelAsync 时,您的应用程序 仍然接收与操作关联的完成事件。为了 例如,当您调用 CancelAsync 取消 DownloadStringAsync 操作,如果您已为 DownloadStringCompleted 事件,您的事件处理程序接收 通知操作已结束。要了解是否 操作成功完成,检查 Canceled 属性 事件数据对象中 DownloadDataCompletedEventArgs 的基类 传递给事件处理程序。如果没有异步操作在 进步,这个方法什么都不做。

【讨论】:

    【解决方案3】:

    调用CancelAsync() 方法。

    【讨论】:

      猜你喜欢
      • 2020-09-15
      • 2011-05-19
      • 1970-01-01
      • 2021-10-21
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2019-03-24
      相关资源
      最近更新 更多