我在使用 Windows 窗体应用程序时遇到问题。
必须从另一个线程显示表单。所以在表单类中,我有以下代码:
private delegate void DisplayDialogCallback();
public void DisplayDialog()
{
if (this.InvokeRequired)
{
this.Invoke(new DisplayDialogCallback(DisplayDialog));
}
else
{
this.ShowDialog();
}
}
现在,每次我运行它时,InvalidOperationException
都会抛出一个在线this.ShowDialog();
:
“跨线程操作无效:控件'SampleForm'从创建它的线程以外的线程访问。”
这段代码有什么问题?这不是进行跨线程调用的有效方法吗?有什么特别之处ShowDialog()
吗?