【问题标题】:WebClient close application when download completes下载完成时 WebClient 关闭应用程序
【发布时间】:2011-02-22 20:01:23
【问题描述】:

我正在使用 WebClient 下载一个巨大的文件 (700+MB)。下载完成后,应用程序会自行关闭。我尝试调试,但无法捕获任何内容。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var wc = new WebClient();
        wc.DownloadDataAsync(new Uri(@"http://192.168.1.100/FileServer/crypto.bin"));

    }
}

这是一个已知的错误吗?

【问题讨论】:

  • 您是否尝试过在其周围放置一个 try/catch 并查看是否捕获到任何东西?
  • 我做到了。正如我所说,我无法捕捉任何东西。应用程序会自行关闭。

标签: c# .net wpf webclient


【解决方案1】:

您必须添加一个事件,例如:

Private void btnDownload_Click(object sender, EventArgs e)
{
  WebClient webClient = new WebClient();
  webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
  webClient.DownloadFileAsync(new Uri("http://mysite.com/myfile.txt"), @"c:\myfile.txt");
}

private void Completed(object sender, AsyncCompletedEventArgs e)
{
  MessageBox.Show("Download completed!");
}

【讨论】:

  • 真正的代码很长,包含很多东西,包括完整的事件处理程序。我发布了简短的代码,因为我缩小了问题的范围。仅供参考,我已经按照你说的做了,但是完成的处理程序从未执行过。
【解决方案2】:

我认为问题在于您必须在初始化程序之外声明 de wc 变量。

    WebClient wc;

    public MainWindow()
    {
        InitializeComponent();

        wc = new WebClient();
        wc.DownloadDataAsync(new Uri(@"http://192.168.1.100/FileServer/crypto.bin"));

    }

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多