簡體   English   中英

ShowDialog上的InvalidOperationException

[英]InvalidOperationException on ShowDialog

我正在開發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和message:

跨線程操作無效:從創建該線程的線程以外的線程訪問控件“ MainForm”。

(譯自法文,原文:)

“無效的線程間操作:在'MainForm'上成功地完成線程的既有任務,又在線程上完成了任務。”

我該怎么解決?

編輯:

我添加了這段代碼:

MyDialog dlg = new MyDialog();
bool needInvokeDlg = dlg.InvokeRequired;
bool needInvokeForm = ProgramApp.MainForm.InvokeRequired;
dlg.ShowDialog(ProgramApp.MainForm);

第一次嘗試都是錯誤的。 其次,needInvokeForm為true。 如何進行調用以將ProgramApp.MainForm設置為參數?

該對話框需要在UI線程上調用。

有關詳細的討論,請參閱這篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM