2016-06-13 81 views
1

目前我有這樣的代碼:如何設置超時在HttpWebResponse C#Windows窗體

public bool checkIfDown(string URL) 
    { 
     try 
     { 
      //Creating the HttpWebRequest 
      HttpWebRequest request = WebRequest.Create("http://www." + URL) as HttpWebRequest; 
      //Setting the Request method HEAD, you can also use GET too. 
      request.Method = "HEAD"; 
      request.Timeout = 1000; 
      //Getting the Web Response. 
      HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
      //Returns TRUE if the Status code == 200     
      return (response.StatusCode == HttpStatusCode.OK); 
     } 
     catch 
     { 
      //Any exception will returns false. 
      return false; 
     } 
    } 

,檢查域是否向上/向下,但我的問題是,反應通常需要超過10秒進入捕捉部分。

例如我的string domain是sample123121212.com,該函數應該返回false,但它花費了10秒以上。

我想是在很短的時間返回false至少2個秒鐘,因爲我需要處理ATLEAST100 domains

任何有關如何做到這一點的建議?

回答

0

我使用的方法是從this

using System.Threading.Tasks; 

    var task = Task.Run(() => SomeMethod(input)); 
    if (task.Wait(TimeSpan.FromSeconds(10))) 
    return task.Result; 
    else 
    throw new Exception("Timed out"); 
1

根據this回答,將屬性Proxy設置爲null可以顯着減少響應時間。

嘗試以下方法:(?2000毫秒)

request.Proxy = null; 

調用GetResponse()

而且之前,你可以設置屬性ReadWriteTimeout到一個特定的值,以確保您可以限制讀取所需的時間和寫入流。

+0

遺憾地說,但它不會改變的結果:( – jt25

+1

我打算使用http://stackoverflow.com/questions/13513650/how-to-set-timeout-for-a- line-of-c-sharp-code – jt25

+0

@AJB使用任務是一種有趣的方法 – Alex

相關問題