我正在研究一個工業Web模塊,它必須異步登錄到Web服務器,並稍後發送小數據請求。 首先,我發送GET請求來接收會話cookie,然後發送帶有UN和PW的POST請求。 我想使用HttpWebRequest類中的BeginGetRequestStream和BeginGetResponse方法。但是,如果您從下面的MSDN中讀取引號,則會提到某些部分不是異步的。如何使BeginGetRequestStream和BeginGetResponse真的異步?
我該如何處理這個問題的最佳方式?我是否應該完全避免使用這些方法,還是應該構建一個自動防故障機制,以防萬一方法花費太長時間纔會跳過代碼(如果甚至可能的話)? 編碼工作不是問題,重要的是確保我的模塊是真正的異步並且永遠不會阻塞主程序。
謝謝!
的BeginGetRequestStream方法需要一些同步設置任務 完成(DNS解析,代理檢測,並且TCP套接字 連接,例如)之前該方法變得異步的。作爲 結果,應始終不要在用戶界面(UI) 線程上調用此方法,因爲它可能需要相當長的時間(取決於網絡設置,可能需要幾分鐘的時間才能完成初始同步 設置任務)錯誤被拋出或方法 成功。
的BeginGetResponse方法需要一些同步設置任務給 完成(DNS解析,代理檢測,並且TCP套接字連接, 例如)之前該方法變得異步的。因此, 不應在用戶界面(UI)線程 上調用此方法,因爲可能需要花費相當長的時間(最長爲幾分鐘,具體取決於網絡設置),以在完成初始同步 安裝任務之前錯誤被拋出或方法 成功。
你爲什麼不使用'HttpClient'?它完全「異步」,它支持基於任務的編程模型 –
奧哈,感謝您的信息。有沒有更多完全不同的方法?在我花費大量時間使用方法之前,我想了解一些關於它們的知識(不幸的是,我已經花時間去了HttpWebRequest,但我想這也是花時間學習VB的時間:) – Comodorewaran
例如,等待和異步? – Comodorewaran