Windows MessageBox显示带有交叉线程的问题

问题描述 投票:0回答:2

我正在尝试使用MessageBox.Show()方法显示错误消息通知。但是我遇到了[[Cross thread operation问题。我用下面的代码。如何解决跨线程问题?我尝试使用MethodInvoker,但是它不能解决我的问题。请向我建议解决此问题的准则。

public static class Notification() { public static void ShowErrorMessage(IWin32Window owner, String msg) { MessageBox.Show(owner, msg, Caption+ " - " + "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
问题:

跨线程操作无效:从创建该线程的线程以外的线程访问控件'MainPage'。

c# multithreading winforms messagebox cross-thread
2个回答
0
投票
ShowErrorMessage是否通过后台线程运行?您是在后台工作程序中还是在异步方法中运行它?如果是这样,那么这就是导致错误的原因,消息框是特定于UI的调用,如果在异步状态下调用它,则会抛出该错误。

0
投票
MessageBox.show() is it not safe to call in worker thread?似乎有一个答案,尽管这个问题有些误导。

此外,this Microsoft documentation page详细解释了如何对WinForm控件进行线程安全的调用,并为您提供了代码示例。

© www.soinside.com 2019 - 2024. All rights reserved.