【发布时间】:2011-12-14 06:57:33
【问题描述】:
我一直在思考这个问题。
假设我们有一个使用 HttpWebRequest 类的简单异步 Web 请求
class webtest1
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("www.google.com");
public webtest1()
{
this.StartWebRequest();
}
void StartWebRequest()
{
webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest), null);
}
void FinishWebRequest(IAsyncResult result)
{
webRequest.EndGetResponse(result);
}
}
同步操作也可以轻松实现:
class webtest1
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("www.google.com");
public webtest1()
{
webRequest.GetResponse();
}
}
那么,当一个更简单的同步操作就足够时,我为什么要使用更复杂的异步操作呢?节省系统资源?
【问题讨论】:
-
因为你喜欢挑战?
-
您没有提及您使用的平台,但我可以推断它不是 SilverLight。在 SL 中,您无法选择。
-
有趣的是,如果我没记错的话,异步 webrequest 方法并不是完全异步的,而是阻塞了部分操作,例如 DNS 查找。
-
@Henk 一般而言。我的只是一个例子。恰好与网络请求相关。