数据库操作可能需要很长时间才能完成。 若要使用户界面保持响应或避免阻止请求线程,请使用异步数据库方法,而不是同步等待命令完成。
安装用于 SQL 客户端代码的 Microsoft.Data.SqlClient NuGet 包。 对于新应用程序,请使用 以及结合 使用的 、 和 方法。 这些方法执行异步输入/输出(I/O),而无需创建后台线程。
Microsoft.Data.SqlClient 还支持本部分所述的回调、等待句柄和轮询模式。
BeginExecuteNonQuery、BeginExecuteReader和BeginExecuteXmlReader方法分别与EndExecuteReader、EndExecuteNonQuery和EndExecuteXmlReader配对。 不要将 Asynchronous Processing=true 添加到连接字符串中;Microsoft.Data.SqlClient 不支持该关键字。
注释
对于新代码,请使用 基于任务的异步模式。 本节中的示例展示了适用于需要回调、等待句柄或轮询的应用程序的受支持的 Begin/End 模式。
使每个连接和命令保持活动状态,直到其操作完成。 调用匹配的 End 方法或等待任务时留意异常。 在桌面应用程序中,仅从用户界面线程更新控件。
本节内容
使用回调的 Windows 应用程序 提供一个示例,演示如何安全地执行异步命令,并正确处理与窗体及其内容与单独线程的交互。
使用等待句柄 ASP.NET 应用程序 提供一个示例,演示如何从 ASP.NET 页执行多个并发命令,并使用 Wait 句柄在所有命令完成时管理操作。
在控制台应用程序中轮询 提供一个示例,演示如何使用轮询等待从控制台应用程序完成异步命令执行。 此方法也适用于类库或其他不带用户界面的应用程序。