簡體   English   中英

HttpWebRequest Async Abort()之后如何釋放連接

[英]How to free connection after HttpWebRequest Async Abort()

這是我對使用HttpWebRequest異步發出請求的了解:

發出異步Web請求的基本結構是調用BeginGetResponse()並同時啟動計時器。 如果響應沒有超時,則BeginGetResponse()將調用一個回調方法,該方法將調用EndGetResponse()並讀取響應。 如果響應確實超時,則將調用與計時器不同的回調方法,並調用WebRequest.Abort()。

這種結構取決於Abort()和EndGetResponse()是互斥的事實。 在EndGetResponse()之后調用Abort()基本上無效,而在Abort()之后調用EndGetResponse()導致EndGetResponse()引發一個異常,然后可以捕獲並處理該異常,但是您要處理超時。

我的問題是,當我需要每秒對幾項服務發出數百個請求而一項服務開始變得非常潛在時。 500毫秒后可能會調用Timeout回調並調用Abort(),我的程序會愉快地繼續。 但是,由於該服務在10秒鍾后仍未返回,因此由BeginGetResponse()啟動的第一個線程仍在等待,並且網絡連接資源不可用於以后的任何請求。

有什么辦法可以讓超時釋放據說超時的線程資源? 如果不是,是否可以設置類似Web.config的值,該值會使請求在與應用程序不同的網絡層上超時?

free up the resources -對我而言,這意味着您的線程應具有析構器/終結器,該析構器/終結器將釋放其擁有的非托管資源( 究竟是什么非托管資源? )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM