Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回Ivoke消息对话框结果_C#_Multithreading - Fatal编程技术网

C# 返回Ivoke消息对话框结果

C# 返回Ivoke消息对话框结果,c#,multithreading,C#,Multithreading,全部。 我已经做了一个广义静态方法,供其他形式使用。 现在我想返回消息框结果,我该怎么做 我使用的代码如下:- public static DialogResult ShowMessage(Form Parent, string Text, string Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton) { if (Parent !

全部。 我已经做了一个广义静态方法,供其他形式使用。 现在我想返回消息框结果,我该怎么做

我使用的代码如下:-

public static DialogResult ShowMessage(Form Parent, string Text, string Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton)
    {
        if (Parent != null && Parent.InvokeRequired)
            return (DialogResult) Parent.Invoke((Action)(() => MessageBox.Show(Text, Caption, Buttons, Icon, DefaultButton)));
        else
            return (MessageBox.Show(Text, Caption, Buttons, Icon, DefaultButton));
    }
它使用简单消息框抛出对象引用错误(例如Ok消息)。
显示消息后会出现空引用。

Action
没有返回值,您应该使用
Func

return (DialogResult) Parent.Invoke(new Func<DialogResult>(() =>
 { return MessageBox.Show(Text, Caption, Buttons, Icon, DefaultButton); }));

这需要是一个
Func
,而不是一个操作。
delegate DialogResult MyInvoke(Form Parent, string Text, string Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton);

public static DialogResult ShowMessage(Form Parent, string Text, string Caption, MessageBoxButtons Buttons, MessageBoxIcon Icon, MessageBoxDefaultButton DefaultButton)
{
    if (Parent.InvokeRequired){
        return (DialogResult)Parent.Invoke(new MyInvoke(ShowMessage), Parent, Text, Caption, Buttons, Icon, DefaultButton);
    }
    return MessageBox.Show(Text, Caption, Buttons, Icon, DefaultButton);
}