簡體   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