当使用MessageBoxManager.Register()重命名c#中的消息框按钮时,我得到此运行时错误“每个线程允许一个钩子” 代码:
MessageBoxManager.Yes = "نعم";
MessageBoxManager.No = "إلغاء";
MessageBoxManager.Register();
谁能帮忙?
答案 0 :(得分:1)
您应该使用:
MessageBoxManager.Unregister();
再次尝试注册之前
这是为了防止在同一线程上进行多次注册。
答案 1 :(得分:0)
晓,
我假设您正在使用here中的MessageBoxManger。
我使用了同样的方法并面对你提到的问题。
在上述链接中可用的源代码中,检查Register()方法,异常就是从那里产生的。
实质上,每个线程只能使用Register()方法一次。如果我没错,你的MessageBoxManager.Register()被执行多次,结果就是例外。
确保它只执行一次。 实现此目的的一种方法是使用布尔值。
实施例:
bool isMsgBoxRegistered = false;
if (!isMsgBoxRegistered)
{
MessageBoxManager.Yes = "نعم";
MessageBoxManager.No = "إلغاء";
MessageBoxManager.Register();
isMsgBoxRegistered = true;
}
编辑:
以上给出的解决方案只是一个临时解决方法。如果不止一次使用,将会出现例外情况(标题中提到)。
为了解决这个问题,最好的解决方案是在完成MessageBoxManager的使用后使用MessageBoxManager.UnRegister()。
答案 2 :(得分:0)
这行代码有效!
MessageBoxManager.Unregister();