我在使用C#开发的MMC snapin时遇到问题。使用Microsoft的MMC示例中的代码snapin using a property page我注意到在从属性页面显示模式消息框后弹出了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的页面进行交互。
有没有其他人看到这个问题 - 我打开属性页面,取消它,再次打开它,让它弹出模态消息框(使用推荐的显示方式),当你单击Apply按钮,然后单击取消并重新 - 打开页面 - 我总是得到DisconnectedContext错误。
我没有在我的控件的构造函数或RefreshData()方法中做任何想法 - 我从EntityFramework对象中获取简单数据并将其放在几个文本框和复选框控件中。
显然,线程有一个问题,显示属性表与snapin的其余部分交互不良,但我没有自己的线程,并且我的控件和我与之交互的唯一地方之间没有交互父属性表是调用ShowDialog方法。
此时欢迎任何想法,以及导致成功理解该错误的任何信息!