C# を使用して開発された MMC スナップインに問題があります。プロパティ ページを使用するスナップインに Microsoft の MMC サンプルのコードを使用すると、プロパティ ページからモーダル メッセージ ボックスを表示した後に、DisconnectedContext エラーが表示されることに気付きました。
これは毎回再現でき、ちょっとしたハックで「修正」できます。
プロパティ ページのユーザー コントロールで CanApplyChanges() のサンプル コードを使用して、検証エラーが発生した場合にメッセージ ボックスを表示します。
public bool CanApplyChanges()
{
if (this.password.Text != this.passwordConfirm.Text)
{
MessageBoxParameters mbp = new MessageBoxParameters();
mbp.Text = "Passwords do not match";
userPropertyPage.ParentSheet.ShowDialog(mbp);
}
}
このメッセージ ボックスをコメント アウトすると、エラーが停止します。これを変更して、代わりに MMC コンソールを親とするメッセージ ボックスを表示することができます。そのため (私は推測します)、プロパティ ページのメッセージ ポンプをブロックしませんが、明らかにこれにより、ユーザーは最適な UI ではないページと対話し続けることができます。
他の誰かがこの問題を見たことがありますか - 私はプロパティ ページを開き、キャンセルし、もう一度開き、[適用] ボタンをクリックしたときに (推奨される表示方法を使用して) モーダル メッセージ ボックスをポップさせ、[キャンセル] をクリックして、ページ - 私は常に DisconnectedContext エラーを受け取ります。
コントロールのコンストラクターまたは RefreshData() メソッドで特別なことは何もしていません。EntityFramework オブジェクトから単純なデータをフェッチし、それをいくつかのテキスト ボックスとチェックボックス コントロールに配置します。
明らかに、プロパティ シートがスナップインの残りの部分と不適切に相互作用していることを示すスレッドに問題がありますが、私には独自のスレッドがなく、コントロールと親プロパティ シートと相互作用する唯一の場所との間に相互作用はありません。その ShowDialog メソッドを呼び出すことです。
この時点で、どんなアイデアも歓迎されます。また、バグの解明につながる情報も歓迎されます!