某些数据库操作(例如命令执行)可能需要大量的时间才能完成。 在这种情况下,单线程应用程序必须阻止其他操作,并等待该命令完成后才能继续执行自己的操作。 与此相反,通过将长时间运行的操作分配给后台线程,允许前台线程在操作过程中保持活动状态。 例如,在 Windows 应用程序中,将长时间运行的操作委托给后台线程允许用户界面线程在执行操作期间保持响应。
.NET Framework 提供了多个标准异步设计模式,开发人员可以使用这些模式利用后台线程并释放用户界面或高优先级线程来完成其他作。 ADO.NET 在其 SqlCommand 类中支持这些相同的设计模式。 具体而言,BeginExecuteNonQuery、BeginExecuteReader 和 BeginExecuteXmlReader 方法与 EndExecuteNonQuery、EndExecuteReader 和 EndExecuteXmlReader 方法一起提供异步支持。
注释
异步编程是 .NET Framework 的核心功能,ADO.NET 充分利用标准设计模式。 有关可供开发人员使用的不同异步技术的更多信息,请参阅以异步方式调用同步方法。
尽管对 ADO.NET 功能使用异步技术不会添加任何特殊注意事项,但与 .NET Framework 其他领域相比,开发人员可能会使用 ADO.NET 中的异步功能。 请务必了解创建多线程应用程序的好处和缺陷。 本部分中的示例指出了开发人员在构建合并多线程功能的应用程序时需要考虑的几个重要问题。
本节中
使用回调的 Windows 应用程序
提供了一个示例,演示如何安全地执行异步命令,以及如何在单独线程中正确地处理与窗体及其内容的交互。
使用等待句柄的 ASP.NET 应用程序
提供了一个示例,演示如何通过 ASP.NET 页执行多个并发命令,使用 Wait 句柄在所有命令完成时管理操作。
在控制台应用程序中轮询
提供了一个示例,演示如何使用轮询等待从控制台应用程序中完成异步命令执行。 此方法也适用于类库或其他不带用户界面的应用程序。