0

在 VS2010 包中,当插入符号位置发生变化时,我有一段代码调用 FileCodeModel.CodeElements。我还在绑定到文档的 CodeModelEvents 中注册了一个处理程序。

当包监视 C# 项目时,它可以正常工作。但是,在监视 VB 项目时,FileCodeModel.CodeElements 调用失败并出现与 E_FAIL 错误相对应的 COMException。

任何想法为什么行为不同?

4

1 回答 1

2

C# 和 VB.net 代码模型是完全独立的实现,它们都有相关的怪癖。

在 VB.Net 中,插入符号位置更改是一组更大的事件的一部分,这些事件可以触发 IDE 中的行提交逻辑。我对它引发这个特定事件并不感到惊讶,尤其是在缓冲区脏的情况下。

可能解决此问题的一种方法是在插入符号移动后等待空闲事件并在CodeElements那里查询。

于 2012-02-04T00:13:00.573 回答