Код для WinForm сбой The calling thread must be STA, because many UI components require this.
при попытке создать пользовательский элемент управления WPF, используя myWpfUserControl = new MyWpfUserControl();
. Кажется, он сбой в конструкторе базового пользовательского элемента управления.Сбой пользовательского управления WPF с «вызывающим потоком должен быть STA»
Точка входа в мое сообщение: ApplicationStartup
в App.xaml.cs
, на котором есть [STAThread]
. Я не использую threading вообще, и я вижу на панели Threads в Visual Studio, когда он падает, что он находится на Main Thread
.
EDIT: Раньше это работало.
Вот скелет моего кода:
[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;
}
}
}
пользовательского элемент управление происходит сбой в базе конструктора, прежде чем любой из кода в моих пробегах управления пользователем, так что нет смысла показывать контрольный код пользователя (Я думаю).
Любые идеи будут оценены.
вам нужно добавить код для диагностики. –
Возможно, связано с вопросом [this] (http://stackoverflow.com/questions/1361033/what-does-stathread-do). – Codor
@Nikita Какой код был бы полезен? – wezten