處理 ADO 事件
ADO 事件模型支援某些同步及異步的 ADO 作業,這些作業在開始前或完成後會發出 事件或通知。 事件實際上是呼叫您在應用程式中定義的事件處理程式例程。
如果您為作業開始前發生的事件群組提供處理程式函式或程式,您可以檢查或修改傳遞至作業的參數。 因為尚未執行,所以您可以取消作業或允許它完成。
如果您在異步使用 ADO 時,作業完成之後發生的事件特別重要。 例如,啟動異步 Recordset.Open 作業的應用程式會在作業結束時收到執行完成事件通知。
使用 ADO 事件模型會增加應用程式的額外負荷,但提供比處理異步操作的其他方法更具彈性,例如使用迴圈監視物件的 State 屬性。
注意
若要處理事件,ADO 必須有訊息幫浦,或用於單個線程 Apartment (STA) 模型中。 ADO 事件是透過建立隱藏視窗在內部處理。 當需要觸發事件時,ADO 會將消息傳送到此視窗。 這樣做是為了確保事件會被傳送到呼叫IConnectionPoint::Advise 的線程上。 當應接收通知的線程不會提取視窗訊息時,此架構可能會造成問題。 潛在的問題包括 ADO 事件未傳遞至線程,而全域窗口廣播會逾時,而且可能會讓整個系統變慢,因為隱藏的視窗不會處理訊息。 zh-TW: STA 執行緒通常會運行訊息幫浦,因此此問題不會在 STA 執行緒上發生。 不過,MTA 線程通常沒有訊息幫浦,因此問題通常會在 MTA 線程上顯示。
本節包含下列主題。
另請參閱
ADO 事件處理程式摘要
ADO 事件依語言 具現化
ADO 事件
事件參數
類型 事件