每个线程允许一个钩子Error MessageBoxManager.Register()
本文关键字:MessageBoxManager Error Register 线程 许一个 | 更新日期: 2023-09-27 17:57:37
使用MessageBoxManager时,我得到了运行时错误"允许每个线程一个钩子"。Register()重命名c中的消息框按钮#代码:
MessageBoxManager.Yes = "نعم";
MessageBoxManager.No = "إلغاء";
MessageBoxManager.Register();
有人能帮忙吗??
您应该使用:
MessageBoxManager.Unregister();
在尝试再次注册之前
这是为了防止在同一个线程上进行多个注册。
Akatsuki,
我假设您正在使用MessageBoxManger。
我使用了同样的方法,并面临着你提到的问题。
在上述链接上可用的源代码中,检查Register()方法,异常由此产生。
本质上,每个线程只能使用Register()方法一次。如果我没有错的话,你的MessageBoxManager。Register()被执行了多次,因此出现了异常。
确保它只执行一次。实现这一点的一种方法是使用布尔值。
示例:bool isMsgBoxRegistered = false;
if (!isMsgBoxRegistered)
{
MessageBoxManager.Yes = "نعم";
MessageBoxManager.No = "إلغاء";
MessageBoxManager.Register();
isMsgBoxRegistered = true;
}
编辑:
上面给出的解决方案只是一个临时的解决方案。在多次使用的情况下,会出现(标题中提到的)例外情况。
为了克服这个问题,最好的解决方案是使用MessageBoxManager。在MessageBoxManager的使用完成后取消注册()。
这行代码成功了!
MessageBoxManager.Unregister();