Visual studio VS2010 FileCodeModel.CodeElements在VB项目中抛出COMException,但在C#项目中不抛出
在VS2010包中,我有一段代码,当插入符号位置改变时,它调用FileCodeModel.CodeElements。我还在绑定到文档的CodeModelEvents中注册了一个处理程序 当软件包监视一个C#项目时,它工作正常。但是,在监视VB项目时,FileCodeModel.CodeElements调用失败,并出现对应于E_FAIL错误的COMException 你知道为什么行为不同吗?C#和VB.net代码模型是完全独立的实现,它们都有各自的特点 在VB.Net中,插入符号位置更改是一组较大事件的一部分,这些事件可以触发IDE中的行提交逻辑。我并不觉得奇怪,它在这个特定事件中抛出,特别是当缓冲区脏的时候Visual studio VS2010 FileCodeModel.CodeElements在VB项目中抛出COMException,但在C#项目中不抛出,visual-studio,visual-studio-2010,vs-extensibility,Visual Studio,Visual Studio 2010,Vs Extensibility,在VS2010包中,我有一段代码,当插入符号位置改变时,它调用FileCodeModel.CodeElements。我还在绑定到文档的CodeModelEvents中注册了一个处理程序 当软件包监视一个C#项目时,它工作正常。但是,在监视VB项目时,FileCodeModel.CodeElements调用失败,并出现对应于E_FAIL错误的COMException 你知道为什么行为不同吗?C#和VB.net代码模型是完全独立的实现,它们都有各自的特点 在VB.Net中,插入符号位置更改是一组较大
解决这个问题的一种方法是在插入符号移动之后等待空闲事件,并在那里查询
codelements
“稍微不同的方式”是本MSDN页面的关键:谢谢!在执行插入符号已更改的处理程序期间,如何等待空闲事件?可能吗?另外,我应该在哪里注册该事件?@Ismael最好的方法可能是执行Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle,callback))
调用