繁体   English   中英

如果使用以下命令执行Internet断开连接,Web客户端请求将被挂起

[英]Web client request gets hanged if Internet is disconnected while executing it using

我正在使用Web客户端向服务器发送一些请求参数,然后根据请求获得响应。 但是我每次尝试发送Web客户端请求时都面临的问题是,如果在发送请求时Internet断开连接,它将使我的应用程序挂起。 有时它会使应用程序崩溃。 我的代码段如下。

 WebClient webClient=new WebClient()
  userData = webClient.UploadValues(URL, "POST", parameters);

                       `

如果执行该行(如果Internet断开连接),它将挂起应用程序。

您可以扩展WebClient,因此它将超时。 尝试这个:

class WebClientWithTimeout : WebClient {
  public WebClientWithTimeout(int timeout) {
    _timeout = timeout
  }
  // Timeout in seconds
  int _timeout;
  protected override WebRequest GetWebRequest(Uri uri) {
    WebRequest webRequest = base.GetWebRequest(uri);
    webRequest.Timeout = 1000 * _timeout;
    return w;
  }
}
 private class YourWebClient : WebClient
        {
            protected override WebRequest GetWebRequest(Uri uri)
            {
                WebRequest wr = base.GetWebRequest(uri);
                wr.Timeout = 7 * 1000;
                return wr;
            }
        }

您可以根据需要更改超时时间。 我已经对其进行了测试,并且对我有用。 实际上, webclient默认超时时间是100秒,但默认情况下大约需要20到25或30秒。因此,您可以根据自己的响应(知道服务器要花费多少时间)进行更改。 您也可以使用threads独立处理此代码,而UI不会挂起。

希望它会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM