模态消息框线程问题

NMu*_*nro 1 c# modal-dialog messagebox winforms

我正在尝试制作一个消息框模态,但我遇到了线程问题.

我有一个这样的课:

public static class DisplayMessage()
{
    public static void ErrorMessage(string errorMessage)
    {
         MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    //other similar methods
}
Run Code Online (Sandbox Code Playgroud)

所以我希望消息框是主窗体的模态.MessageBox.Show已重载,因此您可以指定IWin32Window.所以我尝试使用.ActiveForm,但我明白了:

跨线程操作无效:从创建它的线程以外的线程访问控件.

Wik*_*hla 5

试试这个:

    public static void ErrorMessage( Form Parent, string errorMessage )
    {
        if ( Parent != null && Parent.InvokeRequired )
            Parent.Invoke( (Action)(() => MessageBox.Show( errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error )) );
        else
            MessageBox.Show( errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error );
    }
Run Code Online (Sandbox Code Playgroud)