之前提到想用HttpClient發送post請求向伺服器請求資料,今天被師父發現使用了c#提供的異步接口,但是使用方式卻依然是同步的,就是取了Result,結果依然會阻塞主線程,是以查了查,改成異步回調的方式
具體做法是在HttpClient類中定義一個回調函數類型,參數是我想向外傳遞的類型,然後定義一個回調函數,标記async和await,使用異步方式,當獲得請求後由代碼執行回調函數,使結果傳遞出去
大緻代碼如下:
//HttpClient class
public static void CallBackType(string p1, string p2);
CallBackType callback;
public static void SetCallback(CallBackType cfunc){
callback = cfunc;
}
public static async Task PostFuncAsync(string url, HttpContent httpContent){
HttpResponseMessage response = await httpClient.PostAsync(url, httpContent);
if (response.IsSuccessStatusCode)
{
string result = await response.Content.ReadAsStringAsync();
callback(result, string.Empty);
}
}