目录:
定义-异步方法调用是什么意思?
异步方法调用是.NET编程中使用的方法,它在处理完成之前立即返回调用方,并且不会阻塞调用线程。
当应用程序调用异步方法时,它可以与执行任务的异步方法同时执行。 异步方法在与主应用程序线程不同的线程中运行。 通过另一个线程上的另一个调用来获取处理结果。
异步方法有助于优化资源的执行,从而实现可伸缩的应用程序。 这些用于执行耗时的任务,例如打开大文件,连接到远程计算机,查询数据库,调用Web服务和ASP.NET Web表单。
异步方法调用也可以称为异步方法调用(AMI)。
Techopedia解释了异步方法调用
异步方法与同步方法的不同之处在于它从调用返回的方式。 异步方法调用立即返回,从而允许调用程序执行其他操作,而同步方法调用则等待该方法完成,然后继续执行程序流程。
.NET框架具有内置的异步基础结构,因此可以在不更改其代码的情况下异步调用任何方法。
.NET框架提供了两种实现异步方法的设计模式,即使用异步委托(IASyncResult对象)和事件的设计模式。 异步委托的模式更加复杂并提供了灵活性,这使其非常适合各种复杂的编程模型。 基于事件的模型很简单,应在大多数情况下使用。
在异步委托模式中,委托对象使用两种方法:BeginInvoke和EndInvoke。 BeginInvoke具有一个参数列表,该参数与其包装函数相似,还有两个附加的可选参数。 它返回IAsyncResult对象。 EndInvoke返回两个参数(out和ref类型)以及IAsyncResult对象。 BeginInvoke用于启动异步调用,而EndInvoke用于检索异步调用的结果。
基于事件的异步模式使用一个类,该类具有一个或多个名为MethodNameAsync的方法,这些方法具有在当前线程上执行的相应同步版本。 基于事件的模式也可能具有MethodNameCompleted事件和MethodNameAsyncCancel方法。 这种模式使类可以使用委托事件模型与挂起的异步操作进行通信。
以下是与异步方法相关的一些技巧:
- 为了实现高并发性,必须避免使用异步方法
- 传递共享对象引用时需要小心
- 必须调用EndXXX(在异步操作结束时调用)以重新抛出异常并避免失败
- 通过以异步方法捕获和保存所有异常对象,可以在EndXXX调用期间将其重新抛出
- 如果仅出于此目的需要用户界面中启动长时间运行的异步操作的控件,则必须将其禁用
- 异步方法必须在了解多线程的情况下实现,并且在这种情况下它们比使用同步方法更有效。