我需要以编程方式下载一个大文件并在处理它之前进行一些操作。有什么最好的方法可以做到这一点?由于文件很大,我想要指定等待时间,以便我可以强制退出。
我知道可以使用WebClient.DownloadFile()来下载文件。但是似乎没有办法指定等待时间以便强制退出。
try
{
WebClient client = new WebClient();
Uri uri = new Uri(inputFileUrl);
client.DownloadFile(uri, outputFile);
}
catch (Exception ex)
{
throw;
}
另一种方法是使用命令行工具(wget)下载文件,然后使用ProcessStartInfo来执行命令,并使用Process的WaitForExit(int ms)强制退出。
ProcessStartInfo startInfo = new ProcessStartInfo();
//set startInfo object
try
{
using (Process exeProcess = Process.Start(startInfo))
{
//wait for time specified
exeProcess.WaitForExit(1000 * 60 * 60);//wait till 1m
//check if process has exited
if (!exeProcess.HasExited)
{
//kill process and throw ex
exeProcess.Kill();
throw new ApplicationException("Downloading timed out");
}
}
}
catch (Exception ex)
{
throw;
}
有更好的方法吗?请帮帮忙,谢谢。