Код WinForm дает сбой с The calling thread must be STA, because many UI components require this.
при попытке создать пользовательский элемент управления WPF с использованием myWpfUserControl = new MyWpfUserControl();
. Кажется, он падает в конструкторе базового пользовательского элемента управления.
Точка входа в мое приложение — ApplicationStartup
в App.xaml.cs
, на которой есть [STAThread]
. Я вообще не использую многопоточность, и я вижу на панели «Потоки» в Visual Studio, когда происходит сбой, что он находится на Main Thread
.
РЕДАКТИРОВАТЬ: Раньше это работало.
Вот скелет моего кода:
[STAThread]
private void ApplicationStartup(object sender, StartupEventArgs e)
{
LogonFormEventListener listener = new LogonFormEventListener();
Logon.LogonFormEvent += new Logon.ClassFormEventHandler(listener.TestEventRaised);
Logon logon = new Logon();
logon.ShowDialog();
}
public partial class Logon : Form
{
private void OKbutton_Click(object sender, EventArgs e)
{
if(LogonFormEvent !=null) LogonFormEvent(this, null);
}
}
public class LogonFormEventListener
{
public void TestEventRaised(Logon o, EventArgs e)
{
MainForm mainForm = new MainForm();
mainForm.ShowDialog();
}
}
public partial class MainForm : Form
{
MyWpfUserControl myWpfUserControl;
private void mainMenu_ItemClick(object sender, MenuBar.ItemEventArgs e)
{
switch (e.Item.Key)
{
case "myAction":
myWpfUserControl = new MyWpfUserControl(); //CRASH
...
break;
}
}
}
Пользовательский элемент управления аварийно завершает работу в базовом конструкторе до того, как запустится какой-либо код в моем пользовательском элементе управления, поэтому нет смысла показывать код пользовательского элемента управления (я думаю).
Любые идеи были бы хорошы.
new MyWinForm().ShowDialog()
, а программный код MyWinForm создает MyWpfUserControl. - person wezten   schedule 08.10.2015