通常我用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字节,没有网络活动。 你知道我怎么能让它发挥作用吗?
答案 0 :(得分:1)
您的DownloadFileAsync()调用可能没问题。但请注意,您已经以Console.WriteLine("Video has been defined! " + a.HoleVideoURL());
你得到的输出是
已定义视频!
这告诉你a.HoleVideoURL()没有给你任何URL。因此,下载立即完成,结果为空文件。