1

もともと Petrel 2011 用に作成されたプラグインがあります。最近、これを Petrel 2012 で使用する必要がありました。デバッガーを Petrel に接続し、プラグインがロードされ、モジュールの Initialize() が呼び出されていることを確認しました。これは単にイベント ハンドラーを DataManager.DataSourceManager.Saved イベントに追加するだけです。

Petrel 2011 では、このイベントは保存プロセスの終わり近くで発生します。ただし、2012 では、このイベントは発生しなくなったようです。

プロジェクトが保存されていることを検出するために 2012 で使用する必要がある新しいイベントはありますか? できれば2011年対応のものを。

4

1 に答える 1

2

OK、これに対する答えは 2012 リリース ノートの付録 A にありました。

「新しいワークスペースが作成されるたびに (新しいプロジェクトの作成時またはロード時)、独自の DataSourceManager が必要です。そのため、DataSourceManager のキャッシュは明らかに機能しなくなり、DataSourceManager.Saved イベントは毎回実行する必要があります。プロジェクトが開かれます。これに最適な場所は、DataManager.WorkspaceEvent.Opened イベント ハンドラです。"

私にとってうまくいく解決策は、次のようなものです。

public void Initialize()
{
    DataManager.WorkspaceOpened += ProjectOpened;
}

private void ProjectOpened(object sender, EventArgs e)
{
    DataManager.DataSourceManager.Saved += DataSourceManagerSaved;
}

private void DataSourceManagerSaved(object sender, EventArgs e)
{
    whatever needs doing on save...
}
于 2013-06-04T13:36:23.273 に答える