COM+ 會移除或減少使用 Microsoft Visual Basic 6.0 和 MTS 進行偵錯的數個限制。 下列清單摘要說明 COM+的預期變更:
偵錯多個元件- 在 COM+中,您可以偵錯在 IDE 實例中執行之用戶端以專案群組身分呼叫在另一個實例中執行的任何數目 DLL 的案例。 群組 DLL 專案中的物件可以任意呼叫彼此,視需要流動內容。 當然,這也適用於 DLL 和用戶端位於相同 IDE 實例中的相同專案群組時。
偵錯 Class_Initialize 和 Class_Terminate 事件的限制 — 使用 COM+,即使該程式代碼嘗試存取物件或其對應的內容物件,您還是可以將程式代碼放入 COM+ 應用程式元件的Class_Initialize和Class_Terminate事件中。 您可以在該處設定斷點,並使用監看式。 您也可以在 Class_Terminate 事件中設定斷點。
雖然它不再需要作為因應措施,但如果您需要在元件的啟動和關閉期間執行程序代碼,您仍然可以實作 IObjectControl 介面,並使用其 Activate 和 Deactivate 方法。 您現在可以將斷點放在停用或 CanBePooled 方法的程式代碼中。
監看 MTS 物件 - 使用 COM+,您可以新增 COM+ 所傳回之物件變數的監看式,包括來自 保管庫 Ref、GetObjectContext 和 IObjectContext::CreateInstance 方法的傳回值。
元件失敗時增加穩定性 — 在 COM+中,元件失敗將不再一律停止 Visual Basic(在與偵錯元件相同的進程中執行)。 例如,支援 Just-In-Time (JIT) 重新啟用失敗現在可讓您在偵錯時查看物件內容。
調試程式可能會重新啟用 COM+所發行的物件— 如同 MTS,Visual Basic 6.0 可能會在您偵錯用戶端時重新啟用 COM+ 物件。 由於 Visual Basic 6.0 探索對象相關信息的方式,這是預期的行為。 例如,請考慮下列程式碼:
Dim obj As Object Set obj = CreateObject("MyApp.MyClass") obj.Test 'Call the user-defined subroutine named Test. Set obj = Nothing如果 obj。測試方法會呼叫 IObjectContext::SetComplete,COM+ 會立即釋放記憶體中的 obj,但 obj 尚未設定為 Nothing。 obj 時。測試會傳回,Visual Basic 調試程式會針對 IProvideClassInfo 介面呼叫 obj 上的 QueryInterface。 與 obj 相關聯的內容包裝函式會建立 MyApp.MyClass 的新實例,以服務 QueryInterface 呼叫。 因此,在 obj 之後,您會在調試程式中看到這個未初始化的物件。測試已傳回。 這個物件只會出現在調試程式中,並由後續的指示將 obj 設定為 Nothing 移除。
相關主題