【发布时间】:2017-07-27 10:39:20
【问题描述】:
我做了一个这样的函数:
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 次,而无需等待每次调用在下一次调用之前返回某些内容。
我不知道如何实现它。我试图创建一些 Task 对象来等待它,但是 Task 需要一个委托,我不知道我可以给它什么委托。
上面的 Te 函数使用了一个事件,该事件在结果到来时被触发 - 所以我需要返回该结果。
我该怎么做?
【问题讨论】:
-
这是一个控制台应用程序。我对这一切都很陌生,所以我不确定我是否理解你的意思。 UploadStringAsync 返回无效。 //edit 好像有人删了他的评论
-
对不起,我以为你在使用
HttpClient。您需要订阅UploadStringCompleted事件,该事件将在调用完成后被调用。 -
是否可以切换到
HttpClient,因为它具有原生异步/等待支持,例如msdn.microsoft.com/en-us/library/hh138242.aspx。 -
@Igor,我没关系,如果你知道用HttpClient做的方法,我可以用它
-
在这种情况下,请参阅上一个问题/答案:stackoverflow.com/a/15176685/1260204
标签: c# asynchronous async-await task httprequest