某些資料庫作業,例如命令執行,可能需要相當長的時間才能完成。 在這種情況下,單個線程應用程式必須封鎖其他作業,並等候命令完成,才能繼續自己的作業。 相反地,能夠將長時間執行的作業指派給背景線程,讓前景線程在整個作業中保持作用中。 例如,在 Windows 應用程式中,將長時間執行的作業委派給背景線程,可讓使用者介面線程在執行作業時保持回應。
.NET Framework 提供數種標準異步設計模式,開發人員可用來利用背景線程,並釋放使用者介面或高優先順序線程來完成其他作業。 ADO.NET 在其 SqlCommand 類別中支持這些相同的設計模式。 具體來說,BeginExecuteNonQuery、BeginExecuteReader 和 BeginExecuteXmlReader 方法搭配 EndExecuteNonQuery、EndExecuteReader 和 EndExecuteXmlReader 方法,提供非同步支援。
備註
異步程序設計是 .NET Framework 的核心功能,ADO.NET 充分利用標準設計模式。 如需開發人員可用之不同異步技術的詳細資訊,請參閱 以異步方式呼叫同步方法。
雖然搭配 ADO.NET 功能使用異步技術並不會新增任何特殊考慮,但開發人員可能會比 .NET Framework 的其他區域使用 ADO.NET 中的異步功能更多。 請務必注意建立多線程應用程式的優點和陷阱。 本節中的範例指出在建置包含多線程功能的應用程式時,開發人員必須考慮的幾個重要問題。
本節中
使用 callbacks 的 Windows 應用程式 提供一個範例,示範如何安全地執行非同步指令,正確處理與表單及其內容的互動,並從獨立執行緒中處理。
ASP.NET 使用等待句柄的應用程式 提供一個範例,示範如何從 ASP.NET 頁面執行多個並行指令,並利用等待句柄管理所有指令完成後的操作。
主控台應用程式中的投票 提供一個範例,示範使用輪詢等待主控台應用程式非同步指令執行完成。 這項技術也適用於沒有使用者介面的類別庫或其他應用程式。
另請參閱
- SQL Server and ADO.NET (SQL Server 和 ADO.NET)
- 以異步方式呼叫同步方法
- ADO.NET 概觀