異步操作

某些資料庫作業,例如命令執行,可能需要相當長的時間才能完成。 在這種情況下,單個線程應用程式必須封鎖其他作業,並等候命令完成,才能繼續自己的作業。 相反地,能夠將長時間執行的作業指派給背景線程,讓前景線程在整個作業中保持作用中。 例如,在 Windows 應用程式中,將長時間執行的作業委派給背景線程,可讓使用者介面線程在執行作業時保持回應。

.NET Framework 提供數種標準異步設計模式,開發人員可用來利用背景線程,並釋放使用者介面或高優先順序線程來完成其他作業。 ADO.NET 在其 SqlCommand 類別中支持這些相同的設計模式。 具體來說,BeginExecuteNonQueryBeginExecuteReaderBeginExecuteXmlReader 方法搭配 EndExecuteNonQueryEndExecuteReaderEndExecuteXmlReader 方法,提供非同步支援。

備註

異步程序設計是 .NET Framework 的核心功能,ADO.NET 充分利用標準設計模式。 如需開發人員可用之不同異步技術的詳細資訊,請參閱 以異步方式呼叫同步方法

雖然搭配 ADO.NET 功能使用異步技術並不會新增任何特殊考慮,但開發人員可能會比 .NET Framework 的其他區域使用 ADO.NET 中的異步功能更多。 請務必注意建立多線程應用程式的優點和陷阱。 本節中的範例指出在建置包含多線程功能的應用程式時,開發人員必須考慮的幾個重要問題。

本節中

使用 callbacks 的 Windows 應用程式 提供一個範例,示範如何安全地執行非同步指令,正確處理與表單及其內容的互動,並從獨立執行緒中處理。

ASP.NET 使用等待句柄的應用程式 提供一個範例,示範如何從 ASP.NET 頁面執行多個並行指令,並利用等待句柄管理所有指令完成後的操作。

主控台應用程式中的投票 提供一個範例,示範使用輪詢等待主控台應用程式非同步指令執行完成。 這項技術也適用於沒有使用者介面的類別庫或其他應用程式。

另請參閱