我正在开发一个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);第一次调用很好,但是在第二次调用中,我有一个System.InvalidOperationException,它的HResult = 0x80131509和消息:
跨线程操作无效:从创建线程以外的线程访问的控件'MainForm‘。
(法文原文:)
“非valide线程间操作: le contr le le 'MainForm‘a fait l’‘un accèsàpartir d’‘un螺纹autre que celui sur létécré”。
我能做些什么来解决这个问题?
编辑:
我添加了这段代码:
MyDialog dlg = new MyDialog();
bool needInvokeDlg = dlg.InvokeRequired;
bool needInvokeForm = ProgramApp.MainForm.InvokeRequired;
dlg.ShowDialog(ProgramApp.MainForm);第一次尝试都是错误的。第二,needInvokeForm是真的。如何进行调用以将ProgramApp.MainForm设置为参数?
发布于 2016-11-02 10:50:08
需要在UI线程上调用该对话框。
有关详细讨论,请参见this post。
https://stackoverflow.com/questions/40111561
复制相似问题