我在 Windows 窗体中的跨线程调用出了什么问题?

2023-11-22

我在使用 Windows 窗体应用程序时遇到问题。

表单必须从另一个线程显示。所以在表单类中,我有以下代码:

private delegate void DisplayDialogCallback();

public void DisplayDialog()
{
    if (this.InvokeRequired)
    {
        this.Invoke(new DisplayDialogCallback(DisplayDialog));
    }
    else
    {
        this.ShowDialog();
    }
}

现在,每次我运行这个时,InvalidOperationException被抛在线上this.ShowDialog();:

“跨线程操作无效:从创建它的线程以外的线程访问控制“SampleForm”。”

这段代码有什么问题吗?这不是进行跨线程调用的有效方法吗?有什么特别的吗ShowDialog()?


您可能在表单显示之前执行此代码。
所以,InvokeRequired正在返回false.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我在 Windows 窗体中的跨线程调用出了什么问题? 的相关文章

随机推荐