2

新しいプロジェクトを開始した後、ペトレルが新しいプロジェクトの作成をいつ完了したかを知りたいです。DataManager.WorkspaceOpenedイベントをサブスクライブすると、ワークスペースが開いたときにイベントが呼び出されますが、メインスレッドが新しいプロジェクトの作成を完了したときではない場合があります。

Petrelが新しいプロジェクトの作成をいつ終了するかをいつ知るかについてのアイデアはありますか?

4

1 に答える 1

2

おそらく、プロジェクトイベントを聞くよりも、根本的な問題を解決する別の方法を見つけることができますか?遅延評価を行い、プロジェクトがロードされた後、ユーザーが実際にコードを実行する必要があるまで待つことができますか?

時々、あなたはこの種の問題を輪になって追いかけてしまうかもしれません:私はAがBの後に起こり、BがCの後に起こり、CがAの後に起こる必要があります。

とにかく...ここにあなたがあなたのIModuleで試すことができるハックがあります:

void WorkspaceOpened(object sender, EventArgs e)
{
    Application.Idle += new EventHandler(Application_Idle);
}

void Application_Idle(object sender, EventArgs e)
{
    // Deatach from this, since this event can be raised 100 times per second, 
    // and we only want it once per project.
    Application.Idle -= new EventHandler(Application_Idle);

    DoMyStuffHereAfterTheProjectHasFinishedOpening();
}
于 2012-06-14T08:23:18.540 に答える