C# 连接关闭时下载超时

C# 连接关闭时下载超时,c#,download,timeout,C#,Download,Timeout,可能重复: 我想在代码中输入一个超时。 当文件被下载,而我没有上网时,它会持续60秒,如果连接没有恢复,就会发出一条消息 代码如下: string novoNome; novoNome = strlocal + "\\" + zipNome; using (WebClient wcDownload = new WebClient()) { try { if (!Directory.Ex

可能重复:

我想在代码中输入一个超时。 当文件被下载,而我没有上网时,它会持续60秒,如果连接没有恢复,就会发出一条消息

代码如下:

    string novoNome;
    novoNome = strlocal + "\\" + zipNome;
    using (WebClient wcDownload = new WebClient())
    { 
          try
            {
                if (!Directory.Exists(strlocal))
                {
                    Directory.CreateDirectory(strlocal);
                }

                #region comunicação para download
                //string saida;
                // cria uma requisição do arquivo para download
                webRequest = (HttpWebRequest)WebRequest.Create(url);

                webResponse = (HttpWebResponse)webRequest.GetResponse();                    

                //Perguntar o tamanho do arquivo
                Int64 fileSize = webResponse.ContentLength;

                Uri uri = new Uri(url);

                // Abrindo arquivo para Download
                strResponse = wcDownload.OpenRead(uri);
                // Criando novo arquivo para salvar no HDD
                strLocal = new FileStream(novoNome, FileMode.Create, FileAccess.Write, FileShare.None);
                #endregion

                #region transferencia
                int bytesSize = 0;

                byte[] downBuffer = new byte[2048];                   

                try
                {
                    while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
                    {                           
                        strLocal.Write(downBuffer, 0, bytesSize);
                        //if(this.IsAccessible)
                        this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { strLocal.Length, fileSize });
                        //wcDownload.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wcDownload_DownloadProgressChanged);                              
                    }                        
                }
                catch (Exception e)
                {

                }
                #endregion                    
            }                
            finally
            {
                strResponse.Close();
                strLocal.Close();
            }
        }

有人能帮我吗?

您可以在WebRequest实例上设置超时。类似于:webRequest.Timeout=60000;
如果超时,将引发WebException。有关更多信息,请查看

您应该将Timeout属性设置为WebRequest类


您可以设置两个超时,其中一个是前面提到的答案,即设置webRequest.timeout。对于您的情况,另一个有用的方法是:

webResponse.GetResponseStream().ReadTimeout = 60000;    

当您的internet连接断开60秒后,将引发异常…

您看到发布的代码出现了什么问题?默认情况下,应通过下划线tcp连接处理此问题。代码没有问题。我只想知道我必须改变或添加哪一行来完成它。这正是我想要的!但是,我如何处理这个异常呢?你能看看我的代码并告诉我该把代码放在哪里吗?以及如何处理它抛出的异常。非常感谢!没用!请帮帮我!!T.T