我有一個使用System.Timers.Timer
myTimer的Visual Studio加載項。
每N秒myTimer火災並執行該代碼:因爲這會從另一個線程調用我有時會收到這些錯誤之一如何從另一個線程正確訪問COM對象DTE2.Windows枚舉器?
foreach(Window window in DTE2.Windows)
{
TextDocument td = window.Document.Object("TextDocument") as TextDocument;
// do stuff with td...
}
:
QI爲IEnumVARIANT失敗的 非託管服務器。
在EnvDTE.Windows.GetEnumerator()
上線的foreach(在DTE2.Windows窗口窗口)的應用程序調用的接口 這是編組爲不同 線程。 (從HRESULT異常: 0x8001010E(RPC_E_WRONG_THREAD))
在EnvDTE.Window.get_Document()上線TextDocument TD = window.Document.Object( 「TextDocument」) 作爲TextDocument
;
什麼是訪問此枚舉在另一個線程,因爲COM對象所涉及的正確方法?
某種COM線程編組?
還有別的嗎?
你是說,每次定時器觸發時,代碼段從不同的線程調用? – 2010-12-22 14:19:06
是的。它會被調用System.Timers.Timer後臺線程,因爲它應該。 – 2010-12-22 14:27:35