我一直在思考这个问题。
假设我们有一个使用 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();
}
}
那么,当一个更简单的同步操作就足够了时,我为什么要使用更复杂的异步操作呢?为了节省系统资源?
最佳答案
如果您发出异步请求,则在等待请求响应期间您可以做其他事情。如果您发出同步请求,您必须等待直到您收到响应,然后才能做其他事情。
对于简单的程序和脚本,这可能无关紧要,事实上,在许多情况下,更易于编码和理解的同步方法将是更好的设计选择。
但是,对于非平凡的程序,例如桌面应用程序,同步请求会锁定整个应用程序直到请求完成导致 Not Acceptable 用户体验 .
关于c# - 为什么我应该使用异步操作而不是同步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497353/