.NET提供了异步模式--IAsyncResult,BeginMethod(),EndMethod()。我只是想知道使用这个模式总是比使用相应的同步模式更好 - 只需调用Method()。异步模式总是比.NET中的同步模式好?
在处理UI的情况下,肯定使用异步模式胜过同步模式,因为在Method()中的作业完成时,其他任务可以在当前线程中处理。
但是,如果我们正在开发一个服务器。假设Method()进行数据库调用,并且在从数据库调用获取结果之前,处理Method()的当前线程无关。在这种情况下,我认为使用同步模式会比异步模式更好,因为我们可以节省异步模式所需的一些开销。
您认为如何?在所有情况下,即使对于服务器开发,使用异步模式总是比使用同步模式更好(从节约资源的角度来看)?
感谢
感谢您的回复。你认为即使在服务器编程中,“等待”也是非常有用的吗?在我的情况下,大多数情况下,调用流程无法继续进行I/O调用(例如数据库调用),因此task.Wait()(这里,您可以认为task = Task.Factory.StartNew(Method )))经常用来代替await。 – soleiljy
@soleiljy:'await'对于服务器编程非常有用,但只有当你使用_everywhere_(如果顶级方法返回任务)。它可以让你在不浪费线程的情况下等待操作。你永远不应该调用Wait()。 – SLaks
@soleiljy您应该(几乎)从不在服务器编程中使用'Task.Factory.StartNew',但'await' /'async'非常有用。关键是让服务器方法本身异步,所以等待释放线程。 –