3

現在のソリューションの読み込みが完了した後に通知する必要がある VS2008 アドイン (DTE を使用) を作成しています。

次のコードを使用してみました。

events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;

残念ながら、VS2005 以降、ソリューションの読み込みが開始されたときにイベントがスローされ、終了したときではないようです。

簡単なインターネット検索で、問題を説明し、解決策を提案する次のスレッドが生成されました(各プロジェクト項目をチェックして、読み込みが完了したかどうかを確認してください)。

これは利用可能な最善の解決策ですか?それとも、解決策の読み込みがいつ完了したかを知るためのより良い方法はありますか?

4

1 に答える 1

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);
   }
}
于 2009-10-08T07:03:16.060 に答える