我正在尝试在后台下载文件。通过一项小型研究,我找到了这个小班:http://www.codeproject.com/Articles/35954/C-NET-Background-File-Downloader。 您将在该链接中找到整个代码。
所以我的问题是我无法删除下载的文件,直到我的表单关闭。
我如何处理文件,以便我可以删除它们?
我尝试使用downloader.Stop();
,但这不是诀窍。
手柄未配置。我也试过了downloader.IsBusy = false;
这是相同的,但它既不起作用。
我很确定我在这里缺少一些简单的东西。对不起,麻烦。
这是尝试删除文件时抛出的异常:
An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: The process cannot access the file 'C:\Users\path\download.exe' because it is being used by another process.
我正在做的一个小型复制品。
downloader.LocalDirectory = mp3Path;
downloader.Files.Clear();
downloader.Files.Add(new FileDownloaderApp.FileDownloader.FileInfo(aLinks[Link]));
downloader.Start();
Thread.Sleep(500);
downloader.DeleteCompletedFilesAfterCancel = true;
downloader.Stop();
downloader.IsBusy = false;
Thread.Sleep(500);
File.Delete(mp3Path + "\\" + downloader.CurrentFile.Name);
答案 0 :(得分:0)
为什么使用Thread.Sleep(500),估计下载时间?也许当你停止时,下载仍然没有完成。
我看到了链接,有一个事件:已完成,请检查事件downloader.Completed
downloader.Completed += new EventHandler(downloader_Completed);
您应该尝试处理此事件,检查何时下载文件并执行任何操作(如果需要),并且下载程序具有DeleteCompletedFilesAfterCancel属性,这将使下载程序在完成时自动删除文件。
downloader.LocalDirectory = mp3Path;
downloader.DeleteCompletedFilesAfterCancel = true;
downloader.Completed += new EventHandler(downloader_Completed);
downloader.Files.Clear();
downloader.Files.Add(new FileDownloaderApp.FileDownloader.FileInfo(aLinks[Link]));
downloader.Start();
private void downloader_Completed(object sender, EventArgs e)
{
//Do something if you want
}