8

我正在寻找一个要使用的事件/界面,它会在打开解决方案后所有项目都加载到解决方案中后通知我。

我已经OnAfterOpenSolutionIVsSolutionEvents2界面中实现了。这会在解决方案打开后立即调用......所以我在 UI 线程上运行的任何代码,即使是异步的,都会在项目加载之前锁定 IDE。

是否有与实施`OnAfterOpenSolution'类似的技术,即在解决方案的所有项目都打开后调用?

4

1 回答 1

5

IVsSolutionLoadEvents接口中的OnAfterBackgroundSolutionLoadComplete事件在解决方案的所有项目完成加载后触发。为了使用 IVsSolution.AdviseSolutionEvents(..) 方法附加事件,此实现仍需要实现或扩展 IVsSolutionEvents 接口之一的实现。

在对该区域进行进一步调查后,仅当项目设置为在后台加载时才会发生 OnAfterBackgroundSolutionLoadComplete。如果后台加载已被禁用,则不会发生此事件。如果您打算依赖 OnAfterBackgroundSolutionLoadComplete 事件或根据用户设置加载优先级的方式进行切换,您可能还必须实现IVsSolutionLoadManager并确保至少 1 个项目具有后台加载优先级。

于 2013-05-23T16:05:15.557 回答