您好我正在开发一个面向.NET framework 4.5.2的WPF平台。我正在为我的应用程序编写一个下载程序。这是代码:
private void Download(Dictionary<int, FileAndLinkClass> MyLinks)
{
ApplicationDownloadThread = new Thread(() =>
{
foreach (KeyValuePair<int, FileAndLinkClass> item in MyLinks)
{
fileNo++;
WebClient myWebClient = new WebClient();
myWebClient.DownloadProgressChanged += MyWebClient_DownloadProgressChanged;
myWebClient.DownloadFileCompleted += MyWebClient_DownloadFileCompleted;
// Download the Web resource and save it into the current filesystem folder.
string downloadedFileAdress = System.IO.Path.Combine(fileLocation, $"{item.Value.FileName}");
myWebClient.DownloadFileAsync(new Uri(item.Value.Link), downloadedFileAdress);
while (myWebClient.IsBusy)
{
}
}
});
ApplicationDownloadThread.IsBackground = false;
ApplicationDownloadThread.Start();
//UnZipAndCreateUpdatePackage(MyLinks);
}
现在我想在按钮点击下载必须暂停,在另一个按钮点击下载必须恢复。我尝试使用AutoReset事件的.set()
属性和.Reset()
属性,但它不起作用。
我需要帮助。我的按钮点击代码是:
private AutoResetEvent waitHandle = new AutoResetEvent(true);
private void StartDownloadBtn_Click(object sender, RoutedEventArgs e)
{
waitHandle.Set();
}
private void StopDownloadBtn_Click(object sender, RoutedEventArgs e)
{
waitHandle.Reset();
}
我也试过这个链接How to pause/suspend a thread then continue it?。没有任何反应
我也经历过Adding pause and continue ability in my downloader,但我没有在上面的代码中加入解决方案,因为我也在更新UI上的下载进度。
答案 0 :(得分:1)
嗯,我做了一些挖掘工作,显然,如果你Adding pause and continue ability in my downloader没有清楚,因为它使用了类中的字节流数据。也许您可以查看下面的链接,它还提供了一个VSF解决方案,用于下载带有暂停/恢复/停止功能的.zip文件扩展名。如果您需要更多帮助,请告诉我。
链接到CodeProject文章: C# .NET Background File Downloader