我做了這樣的功能:如何使一個方法異步當我需要等待一個事件
public void GetData(string dataToPost)
{
var url = "some URL";
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.UploadStringCompleted += (s, e) =>
{
Console.WriteLine("Result is here");
Console.WriteLine(e.Result);
};
client.UploadStringAsync(new System.Uri(url), "POST", dataToPost);
}
}
這裏的問題是,我想(從服務器返回的值HTTP事實響應)。
我希望我的函數是異步的,所以例如我希望能夠在循環中調用它5次,而不必等待每次調用在下一次調用之前返回一些內容。
我不知道如何實現它。我試圖創建一些任務對象來等待它,但任務需要一個委託,我不知道我可以給它什麼代表。
上面的te函數使用了一個事件,當結果出現時觸發 - 所以我需要返回該結果。
我該怎麼做?
這是一個控制檯應用程序。我對這一切都很陌生,所以我不確定我是否理解你的意思。 UploadStringAsync返回void。 //編輯看起來像是有人刪除了他的評論 – Loreno
對不起,我以爲你在使用'HttpClient'。您需要訂閱「UploadStringCompleted」事件,該事件一旦完成,將被調用。 – Igor
是否可以切換到'HttpClient',因爲它具有本地異步/等待支持,如https://msdn.microsoft.com/en-us/library/hh138242.aspx。 –