C#DownloadFileAsync不下载该文件

时间:2018-03-17 20:03:10

标签: c# webclient-download

通常我用Java编程,但想要远离它。所以我选中了C#。虽然我注意到很多东西都很安静,但有些东西(显然)不是。

要解决我的问题:

本程序即时编写基本下载视频文件并将其保存到用户指定的目录中。所以为了达到这个目的,我在Stackoverflow上看到了这个解决方案。

WebClient.DownloadFileAsync(videoUri, saveDir);

所以我去了,并在那里添加了一些代码,我想出了这个:

private void btn_download_Click(object sender, EventArgs e)
    {
        Directory.CreateDirectory(saveDir + a.HoleTitel());
        WebClient webClient = new WebClient();
        Uri video;
        try
        {
            videoUri = new Uri(a.HoleVideoURL());
            Console.WriteLine("Video has been defined! " + a.HoleVideoURL());
        } catch
        {
            videoUri = null;
            Console.WriteLine("Video is still null! NullPointerException incomming?");
        }
        webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
        webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
        webClient.DownloadFileAsync(videoUri, saveDir + a.HoleTitel() + "\\Episode " + a.HoleEpisode() + ".mp4");
    }

public void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            prozess.Value = e.ProgressPercentage;
        }

        public void Completed(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Compleated!");
        }

当我进入Url时,一切似乎都完美无缺。当我按下按钮时,它会创建目录和剧集1.mp4文件并打印

  

已定义视频!

但它也显示了一个MessageBox,saiing“已完成!”片刻后打印出来:

  

Der Thread 0x7e0 hat mit code 0(0x0)geendet。 - > “线程0x7e0已经停止了代码0(0x0)。”

理论上应该下载该文件。但它没有那样做。该文件保持0字节,没有网络活动。 你知道我怎么能让它发挥作用吗?

1 个答案:

答案 0 :(得分:1)

您的DownloadFileAsync()调用可能没问题。但请注意,您已经以Console.WriteLine("Video has been defined! " + a.HoleVideoURL());

的形式添加了一个很好的调试打印输出

你得到的输出是

  

已定义视频!

这告诉你a.HoleVideoURL()没有给你任何URL。因此,下载立即完成,结果为空文件。