Мне нужно программно загрузить большой файл перед его обработкой. Какой лучший способ сделать это? Поскольку файл большой, я хочу, чтобы определенное время ожидания, чтобы я мог принудительно выйти.
Я знаю о 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;
}
Есть ли лучший способ? Пожалуйста помоги. Спасибо.