我是C#的新手,我希望异步发送Web请求。我使用方法POST
的HttpWebRequest。问题是,如果我使用函数GetRequestStream()
,即使我异步获得响应,我的应用程序也会冻结。我看了,函数GetRequestStream()
立即尝试与服务器通信。我找到了函数BeginGetResponse()
,但我不明白如何使用它。
有人可以解释一下它是如何运作的吗?如何异步写后期数据?
我想写函数(无论我要编写多少其他私有函数):
public delegate void ReceiveFunc(HttpWebResponse response);
public static void sendRequest(string url, HttpWebRequest request, string content, ReceiveFunc callback) {
// Return response back to callback
}
感谢。
答案 0 :(得分:3)
假设您使用的是C#5.0,则应使用带有异步功能的新async-await
关键字。
您可以使用GetRequestStream()
Stream s = await request.GetRequestStreamAsync()
如果要异步接收响应,则可以调用:
HttpWebResponse response = await request.GetResponseAsync()
这将使您的生活比使用具有Begin和End函数的旧回调方法更容易。
请注意,只要您使用await
关键字,就必须将该功能标记为async
以下是关于使用async-await关键字的MSDN文章:https://msdn.microsoft.com/en-us/library/hh191443.aspx