Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VS2010 FileCodeModel.CodeElements在VB项目中抛出COMException,但在C#项目中不抛出_Visual Studio_Visual Studio 2010_Vs Extensibility - Fatal编程技术网

Visual studio VS2010 FileCodeModel.CodeElements在VB项目中抛出COMException,但在C#项目中不抛出

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中,插入符号位置更改是一组较大

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

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

你知道为什么行为不同吗?

C#和VB.net代码模型是完全独立的实现,它们都有各自的特点

在VB.Net中,插入符号位置更改是一组较大事件的一部分,这些事件可以触发IDE中的行提交逻辑。我并不觉得奇怪,它在这个特定事件中抛出,特别是当缓冲区脏的时候


解决这个问题的一种方法是在插入符号移动之后等待空闲事件,并在那里查询
codelements

“稍微不同的方式”是本MSDN页面的关键:谢谢!在执行插入符号已更改的处理程序期间,如何等待空闲事件?可能吗?另外,我应该在哪里注册该事件?@Ismael最好的方法可能是执行
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle,callback))
调用