Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在后台下载文件并取消_C#_Download_Background - Fatal编程技术网

C# 在后台下载文件并取消

C# 在后台下载文件并取消,c#,download,background,C#,Download,Background,我正试图在后台下载一个文件。我做了一个小调查,发现了这个小班:。 您将在该链接中找到完整的代码 所以我的问题是,在我的表单关闭之前,我无法删除下载的文件。 如何处理这些文件以便删除它们? 我尝试使用downloader.Stop()然而,这不是诀窍。 手柄未处理。我还尝试了downloader.IsBusy=false这是相同的,但也不起作用 我很确定我错过了一些简单的东西。抱歉给你添麻烦了 这是尝试删除文件时引发的异常: An unhandled exception of type 'Syst

我正试图在后台下载一个文件。我做了一个小调查,发现了这个小班:。 您将在该链接中找到完整的代码

所以我的问题是,在我的表单关闭之前,我无法删除下载的文件。 如何处理这些文件以便删除它们? 我尝试使用
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);

为什么使用Thread.Sleep(500),您估计了下载的时间?也许当你停下来的时候,下载还没有完成

我看到了链接,有一个事件:已完成,检查事件下载程序。已完成

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
} 

是的,但是如果下载被破坏了呢。几分钟后就回来了。这就是为什么我会在几秒钟后检查下载的大小,如果它非常小,我会停止下载并尝试删除文件。这就是我的问题所在。我无法停止下载并删除文件。