|
|
1
4
为了有用,异步调用需要在你做其他事情的同时做它自己的事情。有两种方法可以做到这一点: 你不会用WaitHandle来做这两件事。但是,WaitHandle类使客户端可以进行异步调用并等待:
返回结果。
换句话说,如果你使用
|
|
|
2
3
异步调用的一个非常实用的用途是这样的 http://i.msdn.microsoft.com/Bb760816.PB_oldStyle%28en-us,VS.85%29.png 如果你想在等待“服务器”做某事的同时更新你的UI,你需要进行异步调用。 如果你进行同步调用,你的代码将陷入等待状态,但如果你进行异步调用,你可以在等待回调的同时更新UI,甚至让用户去做其他事情。这超出了UI的范围,您可以进行异步调用以启动一些非关键任务并继续执行代码,如果结果不重要,您甚至可能不注册回调。 如果在等待异步调用时什么也不做,那么它就没那么有用了。 |
|
|
3
1
使用异步调用可以释放您的应用程序在等待响应时做其他事情。由于等待web服务器响应的时间相当长(在计算机周期中),因此可以将这段时间用于更好的事情,例如显示状态更新或做其他工作。 例如,如果您有一个执行复杂计算的程序,并且该计算的一个步骤包括使用来自远程web服务的一些参考数据。通过在计算开始时异步调用web服务,继续执行可以在本地执行的计算部分,然后在web服务调用的结果可用于完成计算时使用该结果,可以减少计算的总时间。 因为您的应用程序代码不是 阻塞 等待web服务响应,您可以利用这段等待时间来造福用户。 另一个原因是扩展,特别是在调用其他web服务的网站中。通过使用异步页面方法(或任务),IIS可以更有效地扩展您的应用程序,将等待异步web请求的页面推迟到所谓的“IO线程”,从而释放主ASP。NET工作线程来提供更多的网页。 |
|
|
4
1
您链接到的第一个示例发出异步调用,然后立即等待结果。除了将作业分叉到另一个线程之外,据我所知,这与同步调用之间几乎没有区别。 然而,另一个例子谈到了同时执行多个异步调用。如果是这样的话,启动所有调用然后等待是有意义的,因为这些调用可能会并行执行。 |
|
|
5
0
异步调用后等待的一种可能用途是,异步操作通常支持取消,而阻塞调用则不支持。结合the CancellationToken 图案中。NET 4.0(或.NET 4之前的类似自定义模式),您可以创建一个看似同步但可以轻松取消的操作。 |