我对使用 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 的页面交互。
有没有其他人看到这个问题 - 我打开属性页,取消它,再次打开它,当您单击应用按钮时,使其弹出模式消息框(使用推荐的显示方式),然后单击取消并重新打开page - 我总是收到 DisconnectedContext 错误。
我没有在我的控件的构造函数或 RefreshData() 方法中做任何花哨的事情 - 我从 EntityFramework 对象获取简单数据并将其放置在几个文本框和复选框控件中。
显然,显示属性表与管理单元的其余部分交互不良的线程存在问题,但我没有自己的线程,并且我的控件与我与父属性表交互的唯一位置之间没有交互就是调用那个 ShowDialog 方法。
在这一点上,任何想法都将受到欢迎,任何导致成功理解该错误的信息也将受到欢迎!