每个线程一个钩子允许错误MessageBoxManager.Register()

时间:2014-04-09 09:38:58

标签: c# runtime-error messagebox

当使用MessageBoxManager.Register()重命名c#中的消息框按钮时,我得到此运行时错误“每个线程允许一个钩子”  代码:

 MessageBoxManager.Yes = "نعم";
        MessageBoxManager.No = "إلغاء";
        MessageBoxManager.Register();
谁能帮忙?

3 个答案:

答案 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();