某些資料庫作業 (例如命令執行) 可能需要大量時間才能完成。 在這種情況下,單一執行緒的應用程式必須封鎖其他作業並等候命令完成,才會繼續它們自己的作業。 相較之下,若能將長時間執行的作業指派給背景執行緒,就能讓前景執行緒在整個作業過程中維持運作。 例如,在 Windows 應用程式中,將長時間執行的作業委派給背景執行緒,可讓使用者介面執行緒在作業執行時維持回應。
.NET 提供了數個標準的非同步設計模式,讓開發人員可用來利用背景執行緒,並釋放使用者介面或高優先順序的執行緒,以便在其 SqlCommand 類別中完成其他作業。 具體而言,BeginExecuteNonQuery、BeginExecuteReader 和 BeginExecuteXmlReader 方法 (與 EndExecuteNonQuery、EndExecuteReader 和 EndExecuteXmlReader 方法配對) 都提供非同步支援。
注意
非同步程式設計是 .NET 的一個核心功能。 如需有關開發人員可使用的各種非同步技術的詳細資訊,請參閱以非同步方式呼叫同步方法。
雖然使用具有 ADO.NET 功能的非同步技術並不會新增任何特殊考量,但請務必留意建立多執行緒應用程式的優點和陷阱。 此節中後續的範例會指出在建置包含多執行緒功能的應用程式時,開發人員必須考慮的數個重要問題。
本節內容
使用回呼函式的 Windows 應用程式
提供範例來示範如何安全地執行非同步命令,並正確處理與表單及其來自不同執行緒的內容互動。
使用等候控制代碼的 ASP.NET 應用程式
提供範例來示範如何從 ASP.NET 網頁執行多個並行命令,並使用 Wait 控制代碼來管理完成所有命令的作業。
主控台應用程式中的輪詢
提供範例來示範如何使用輪詢,以等候主控台應用程式的非同步命令執行完成。 此技術在類別庫或其他沒有使用者介面的應用程式中也有效。
相關內容
- SQL Server and ADO.NET (SQL Server 和 ADO.NET)
- 以非同步的方式呼叫同步方法