坑阿~ HttpWebRequest

             

// 這是早期C#請求HttpRequest的寫法
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
// 現在C#開發者都轉為HttpClient了
static readonly HttpClient client = new HttpClient();
HttpClient有Task base語法糖等等,讓開發者比較相當方便使用非同步請求,但是...硬要說缺點就是整個函數都需要改為Async宣告,有些老舊的程式無法支援Async宣告,除了語法糖之外,非同步請求關係底層OS的I/O模型,非同步請求可以大大降低CPU資源,那能不能混用呢(呼叫一個非同步API使用同步等待)?其實是可以的...改用古老的BeginXXX, EndXXX
var result = request.BeginGetResponse((a) => { }, null);
using (Stream reqStream = request.EndGetRequestStream(result)) {}
聽起來是不是很讚,老程式有回春的一天。 但是有一個天大的巨坑,HttpWebRequest timeout屬性就不能用了。
request.Timeout = timeout;
至於解法就給有緣人看看吧~ 解法

留言

這個網誌中的熱門文章

升級電腦

[心血來潮的介紹] 在我心中滿分自動筆 STAEDTLER 925 25

使用spdlog的時候win32平台如何加速編譯?