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

本文关键字:MessageBoxManager Error Register 线程 许一个 | 更新日期: 2023-09-27 17:57:37

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

 MessageBoxManager.Yes = "نعم";
        MessageBoxManager.No = "إلغاء";
        MessageBoxManager.Register();

有人能帮忙吗??

每个线程允许一个钩子Error 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();
相关文章:
  • 没有找到相关文章