如果Internet在使用时执行它而断开连接,则Web客户端请求会被挂起

时间:2017-12-19 06:29:52

标签: c# wpf webclient

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

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

                       `

如果因特网断开连接而执行该行,则会挂起应用程序。

2 个答案:

答案 0 :(得分:0)

您可以扩展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;
  }
}

答案 1 :(得分:0)

 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不会被绞死。

希望它会有所帮助。