异步操作 (ADO.NET)

更新:November 2007

某些数据库操作(例如命令执行)可能要花费很长时间才能完成。 在此类情况下,单线程应用程序必须阻塞其他操作,并且等待该命令完成,然后才可以继续执行它们自己的操作。 比较而言,如果能够将长时间运行的操作分配给某个后台线程,就可以允许前台线程在整个操作期间保持活动状态。 例如,在 Windows 应用程序中,通过将长时间运行的操作委托给后台线程,可允许用户界面线程在操作执行时保持响应状态。

.NET Framework 提供若干标准异步设计模式,开发人员可以通过这些模式充分利用后台线程并释放用户界面线程或高优先级的线程以完成其他操作。 ADO.NET 在其 SqlCommand 类中支持相同的设计模式。 具体而言,BeginExecuteNonQueryBeginExecuteReaderBeginExecuteXmlReader 方法(与 EndExecuteNonQueryEndExecuteReaderEndExecuteXmlReader 方法搭配)提供异步支持。

只在 Microsoft Windows XP 和 Windows 2000 中支持这些方法,在 Windows 98 或 Windows ME 中不支持这些方法。

说明:

异步编程是 .NET Framework 的核心功能,并且 ADO.NET 充分利用了标准设计模式。 有关可供开发人员使用的不同异步技术的更多信息,请参见使用异步方式调用同步方法

尽管将异步技术与 ADO.NET 功能一起使用没有什么新增的需特别注意的事项,但与 .NET Framework 的其他领域相比,很可能更多的开发人员将在 ADO.NET 中使用异步功能。 了解创建多线程应用程序的优缺点十分重要。 本节之后的那些示例指出了若干重要问题,开发人员在开发纳入了多线程功能的应用程序时将需要考虑这些问题。

本节内容

请参见

概念

使用异步方式调用同步方法

其他资源

SQL Server 和 ADO.NET