我正在编写一个 VS2008 加载项(使用 DTE),需要在当前解决方案完成加载后得到通知。
我试过使用下面的代码:
events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;
不幸的是,从 VS2005 开始,事件似乎在解决方案开始加载时抛出 - 而不是在它完成时抛出。
简短的互联网搜索产生了 following thread解释问题并提出解决方案(检查每个项目项以查看它是否已完成加载)。
这是可用的最佳解决方案还是有更好的方法来了解解决方案何时完成加载?
最佳答案
我找到了解决此问题的解决方法 - 我创建了一个在主线程上运行的 Windows.Forms.Timer 并检查解决方案是否已完成加载。
private void TimerTick(object sender, EventArgs e)
{
try
{
var solution = applicationObject.Solution;
if (solution.IsOpen && string.IsNullOrEmpty(solution.FileName) == false)
{
timer.Stop();
// insert logic here
}
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}
关于c# - Visual Studio 加载项 : How do I know when a solution has finished loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496809/