我正在编写一个下载网页内容的应用程序。问题是,当下载开始时,整个应用程序会冻结,直到下载完成。有没有办法设置超时,在一段时间后停止进程?
如果您不希望整个程序冻结,则可以在BackgroundWorker
上完成下载,但如果您只想运行一个进程给定的时间量然后停止它,您可以使用Process.WaitForExit
,并将超时设置为 2 分钟。
2 分钟后,如果它返回 false,则可以使用Process.Kill
终止它。
Process process = Process.Start("myDownloadApp.exe");
//wait 2 minutes
if (!process.WaitForExit(120000))
{
process.Kill();
}
Task.Factory.StartNew
允许您在单独的线程中运行函数。这意味着您可以在后台运行函数,而不会影响主线程。可能是一种选择...
您可以将其与System.Timers.Timer
一起使用,这允许您在设定的时间后运行进程。您可以将其设置为 2 分钟,如果进程仍在运行,则终止该进程。更多信息在这里: https://learn.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.8