我有一个使用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