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