我正在开发一个C#应用程序。
我有一个像对话框一样使用的对象:
public partial class MyDialog : Form
主窗口是:
public class MyForm : Form
我可以通过以下方式使用它:
public class ProgramApp
{
public static MyForm MainForm { get { return _mainForm; } }
}
在一个功能中,我可以同时使用:
MyDialog dlg = new MyDialog();
dlg.ShowDialog(ProgramApp.MainForm);
第一次调用很好,但是在第二次调用时,我有一个带有HResult = 0x80131509的System.InvalidOperationException并且消息:
跨线程操作无效:从a访问控制'MainForm' 除了创建它的线程以外的线程。
(翻译自法语,原文:)
“Opérationinter-threads non-valide:lecontrôle'MainForm'a fait l'objet d'unacèsàpartird'un thread autre que celui sur lequel ilaétécréé。“
我该怎么做才能解决这个问题?
编辑:
我添加了这段代码:
MyDialog dlg = new MyDialog();
bool needInvokeDlg = dlg.InvokeRequired;
bool needInvokeForm = ProgramApp.MainForm.InvokeRequired;
dlg.ShowDialog(ProgramApp.MainForm);
首次尝试都是假的。第二,needInvokeForm是真的。如何进行调用以将ProgramApp.MainForm设置为参数?