第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

HttpClient和HttpClientHandler必須處理嗎?

HttpClient和HttpClientHandler必須處理嗎?

牧羊人nacy 2019-06-19 17:05:18
HttpClient和HttpClientHandler必須處理嗎?System.Net.Http.HttpClient和System.Net.Http.HttpClientHandler在.NET Framework4.5中實(shí)現(xiàn)IDisposable(通過System.Net.Http.HttpMessageInvoker).這個using聲明文件說:通常,當(dāng)您使用IDisposable對象時,您應(yīng)該在Using語句中聲明并實(shí)例化它。這個答案使用此模式:var baseAddress = new Uri("http://example.com");var cookieContainer = new CookieContainer();using (var handler = new HttpClientHandler()  { CookieContainer = cookieContainer })using (var client = new HttpClient(handler) { BaseAddress = baseAddress }){     var content = new FormUrlEncodedContent(new[]     {         new KeyValuePair<string, string>("foo", "bar"),         new KeyValuePair<string, string>("baz", "bazinga"),     });     cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));     var result = client.PostAsync("/test", content).Result;     result.EnsureSuccessStatusCode();}但是微軟最明顯的例子就是Dispose()無論是顯式的還是隱式的。例如:這個原創(chuàng)博客文章宣布HttpClient的相關(guān)信息。實(shí)際MSDN文檔為了HttpClient。Bing TranslateSampleGoogleMapsSampleWorldBankSample在公告有人問微軟員工:在檢查了您的示例之后,我發(fā)現(xiàn)您沒有對HttpClient實(shí)例執(zhí)行Dispose操作。我在我的應(yīng)用程序上使用了HttpClient的所有實(shí)例并使用了Use語句,并且我認(rèn)為這是正確的方法,因?yàn)镠ttpClient實(shí)現(xiàn)了IDisposable接口。我在正確的道路上嗎?他的回答是:一般來說,這是正確的,盡管您必須小心使用“和”異步“,因?yàn)樗鼈儾皇钦嬲旌显?NET 4中,在.NET 4.5中,您可以在”使用“語句中使用”等待“。順便說一句,您可以像您喜歡的那樣多次重用相同的HttpClient,所以通常不會一直創(chuàng)建/處理它們。對于這個問題,第二段是多余的,它不關(guān)心您可以使用HttpClient實(shí)例多少次,而是關(guān)心在不再需要HttpClient實(shí)例之后是否需要將它釋放。(更新:事實(shí)上,第二段是答案的關(guān)鍵,如下所示,由@DPeden提供。)所以我的問題是:考慮到當(dāng)前的實(shí)現(xiàn)(.NET Framework4.5),是否有必要在HttpClient和HttpClientHandler實(shí)例上調(diào)用Dispose()?澄清:我所說的“必要”是指如果不處理有任何負(fù)面后果,如資源泄漏或數(shù)據(jù)損壞風(fēng)險。如果沒有必要,這是否是一個“良好的實(shí)踐”,因?yàn)樗麄儗?shí)現(xiàn)了IDisposable?如果有必要(或建議),是這段代碼上面提到過安全地實(shí)現(xiàn)它(對于.NET Framework4.5)?如果這些類不需要調(diào)用dist(),為什么它們被實(shí)現(xiàn)為IDisposable?如果他們需要,或者如果這是一種推薦的做法,微軟的例子是誤導(dǎo)還是不安全?
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個贊

據(jù)我理解,呼喚Dispose()只有在鎖定以后需要的資源時(比如特定的連接),才有必要??偸?/trans>推薦釋放不再使用的資源,即使不再需要它們,僅僅因?yàn)槟粦?yīng)該使用它們一般保留不使用的資源(雙關(guān)意)。

微軟的例子不一定是不正確的。當(dāng)應(yīng)用程序退出時,將釋放所有使用的資源。在這個例子中,這幾乎是在HttpClient已經(jīng)用完了。在類似情況下,顯式調(diào)用Dispose()有點(diǎn)多余。

但是,通常情況下,當(dāng)一個類實(shí)現(xiàn)IDisposable,我們的理解是你應(yīng)該Dispose()一旦你做好充分的準(zhǔn)備和能力。我認(rèn)為這種情況在如下情況下尤其正確HttpClient其中沒有明確記錄資源或連接是否被保存/打開。在重新使用連接的情況下(很快),您將需要放棄Dipose()在這種情況下,你還沒有“完全準(zhǔn)備好”。

另見:IDisposable.Disposed方法何時調(diào)用Dispose


查看完整回答
反對 回復(fù) 2019-06-19
  • 3 回答
  • 0 關(guān)注
  • 1370 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號