我正在编写一个VS2008加载项(使用DTE),需要在当前解决方案加载完成后得到通知。
我尝试使用以下代码:
events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;
不幸的是,从VS2005开始,当解决方案开始加载时抛出事件 - 而不是在它完成时抛出。
短暂的互联网搜索产生following thread解释问题并提出解决方案(检查每个项目项目是否已完成加载)。
这是可用的最佳解决方案还是有更好的方法来了解解决方案何时完成加载?
答案 0 :(得分:4)
我找到了解决此问题的解决方法 - 我创建了一个在主线程上运行的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);
}
}