我的WPF应用程序中有一个自定义的消息框。问题是:当我在一个不是从Window派生的类中调用它时,没有显示此消息框。没有编译错误。参考文献正确添加。
我不打算在这个类中调用任何UI组件。
调试时出现异常:“调用线程必须是STA,因为许多UI组件都需要这个”
我遇到了同样的问题,问题是当我们创建自定义MessageBox时,它可能来自Windows组件之类的UI组件,然后当我们尝试从我们的应用程序中的代码创建的线程创建和显示我们的自定义MessageBox时(意思是后台线程)我们得到错误:
“调用线程必须是STA,因为许多UI组件都需要这个”。
由于“mottukutty”评论了他自己的问题,解决方案是使用应用程序的Dispatcher来显示我们的自定义MessageBox,如:
public partial class MessageBox : Window
{
private static MessageBox _messageBox;
public static MessageBoxResult Show(string message, MessageBoxType type,
string okText = null, string yesText = null, string noText = null)
{
Application.Current.Dispatcher.Invoke(show);
void show()
{
_messageBox = new MessageBox(message, type, okText, yesText, noText);
_messageBox.ShowDialog();
}
return _messageBox.Result;
}
}