0
我正在研究C#應用程序。ShowDialog上的InvalidOperationException
我有使用象一個對話框的對象:
public partial class MyDialog : Form
的主窗口是:
public class ProgramApp
{
public static MyForm MainForm { get { return _mainForm; } }
}
在一個函數I:
public class MyForm : Form
我可以由使用它可以同時使用:
MyDialog dlg = new MyDialog();
dlg.ShowDialog(ProgramApp.MainForm);
首先調用工作良好,但在第二個我有HResult的= 0x80131509和消息的System.InvalidOperationException:
跨線程操作無效:控制「的MainForm」從其他一個 線程訪問而不是它創建的線程。
(從法語,原始消息:)翻譯
「的操作跨線程非的Valide:LE CONTROLE 'MainForm的' 一個 既成事實L'客體D'未ACCESàpartir D'未螺紋autre que celui sur lequel il aétécréé。「
我該怎麼做才能解決這個問題?
編輯:
我加了這段代碼:
MyDialog dlg = new MyDialog();
bool needInvokeDlg = dlg.InvokeRequired;
bool needInvokeForm = ProgramApp.MainForm.InvokeRequired;
dlg.ShowDialog(ProgramApp.MainForm);
第一次嘗試都是假的。第二,needInvokeForm是真的。我怎樣才能做一個調用將ProgramApp.MainForm設置爲參數?
在原貼上找不到答案 –
@dotctor你能重新打開這個問題嗎? –
也許只是將表單轉換爲所需的'IWin32Window'接口,即'dlg.ShowDialog((IWin32Window)ProgramApp.MainForm)',因爲它沒有任何UI元素。 – stuartd