【问题标题】:how to set a timeout for download in C# [closed]如何在 C# 中设置下载超时 [关闭]
【发布时间】:2019-08-25 16:10:04
【问题描述】:

我正在编写一个下载网页内容的应用程序。问题是,当下载开始时,整个应用程序会冻结,直到下载完成。有没有办法设置超时,在某个时间后停止进程?

【问题讨论】:

    标签: c# web-scraping timeout


    【解决方案1】:

    如果您不希望整个程序冻结,那么您可以在BackgroundWorker 上完成下载,但如果您只是想在给定的时间内运行某个进程然后停止它,您可以使用Process.WaitForExit,并将超时设置为 2 分钟。

    2分钟后,如果返回false,则可以使用Process.Kill终止它。

    Process process = Process.Start("myDownloadApp.exe");
    
    //wait 2 minutes
    if (!process.WaitForExit(120000))
    {
        process.Kill();
    }
    
    

    【讨论】:

      【解决方案2】:

      Task.Factory.StartNew 允许您在单独的线程中运行函数。这意味着您可以在后台运行您的函数而不会影响主线程。可能是一个选择...

      您可以将它与System.Timers.Timer 一起使用,它允许您在设定的时间后运行一个进程。您将其设置为 2 分钟,如果它仍在运行,则终止该进程。更多信息在这里:https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 2012-09-24
        • 2021-07-29
        • 2011-07-27
        • 2015-01-16
        • 2013-08-22
        • 1970-01-01
        相关资源
        最近更新 更多