天天看點

c# 異步回調post請求http

之前提到想用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);
	}
}