异步操作 (ADO.NET)
更新:November 2007
某些数据库操作(例如命令执行)可能要花费很长时间才能完成。 在此类情况下,单线程应用程序必须阻塞其他操作,并且等待该命令完成,然后才可以继续执行它们自己的操作。 比较而言,如果能够将长时间运行的操作分配给某个后台线程,就可以允许前台线程在整个操作期间保持活动状态。 例如,在 Windows 应用程序中,通过将长时间运行的操作委托给后台线程,可允许用户界面线程在操作执行时保持响应状态。
.NET Framework 提供若干标准异步设计模式,开发人员可以通过这些模式充分利用后台线程并释放用户界面线程或高优先级的线程以完成其他操作。 ADO.NET 在其 SqlCommand 类中支持相同的设计模式。 具体而言,BeginExecuteNonQuery、BeginExecuteReader 和 BeginExecuteXmlReader 方法(与 EndExecuteNonQuery、EndExecuteReader 和 EndExecuteXmlReader 方法搭配)提供异步支持。
只在 Microsoft Windows XP 和 Windows 2000 中支持这些方法,在 Windows 98 或 Windows ME 中不支持这些方法。
说明: |
---|
异步编程是 .NET Framework 的核心功能,并且 ADO.NET 充分利用了标准设计模式。 有关可供开发人员使用的不同异步技术的更多信息,请参见使用异步方式调用同步方法。 |
尽管将异步技术与 ADO.NET 功能一起使用没有什么新增的需特别注意的事项,但与 .NET Framework 的其他领域相比,很可能更多的开发人员将在 ADO.NET 中使用异步功能。 了解创建多线程应用程序的优缺点十分重要。 本节之后的那些示例指出了若干重要问题,开发人员在开发纳入了多线程功能的应用程序时将需要考虑这些问题。
本节内容
使用回调的 Windows 应用程序 (ADO.NET)
提供一个示例,演示如何安全地执行异步命令,并且通过单独线程正确处理与某一窗体及其内容的交互。使用等待句柄的 ASP.NET 应用程序 (ADO.NET)
提供一个示例,演示如何从 ASP.NET 页执行多个并行命令,并且使用等待处理管理在所有命令都完成时的操作。在控制台应用程序中轮询 (ADO.NET)
提供一个示例,演示如何在控制台应用程序中使用轮询来等待异步命令执行的完成。 在类库或没有用户界面的其他应用程序中此技术同样有效。