非同步作業 (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 功能搭配使用非同步技術並不會有任何額外的特殊考量,但大多數的開發人員都只會在 ADO.NET 中使用非同步功能,而不會在 .NET Framework 中的其他領域使用。瞭解建立多執行緒應用程式的優缺點是很重要的。本節中接下來的範例會指出在建置包括多執行緒功能的應用程式時,開發人員需要考量的數個重要問題。
在本節中
使用回呼的 Windows 應用程式 (ADO.NET)
提供範例,示範如何安全地執行非同步命令,以及正確地處理單獨執行緒與表單及其內容之容的互動。使用等候控制代碼的 ASP.NET 應用程式 (ADO.NET)
提供範例,示範如何從 ASP.NET 網頁執行多個並行命令,並在所有命令完成後使用等候控制代碼管理作業。在主控台應用程式中輪詢 (ADO.NET)
提供範例,示範如何使用輪詢等待從主控台應用程式執行的非同步命令完成。此技術在類別庫或不具使用者介面的其他應用程式中也有效。