[英]OpenFileDialog.ShowDialog() raises InvalidOperationException in Silverlight
[英]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.