当试图创建WPF用户控件时,使用myWpfUserControl = new MyWpfUserControl();
,WinForm背后的代码崩溃The calling thread must be STA, because many UI components require this.
。它似乎在基础用户控件构造函数中崩溃。WPF用户控件崩溃'调用线程必须是STA'
我的应用程序的入口点是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;
}
}
}
中相应的基构造用户控制崩溃,之前的任何在我的用户控制运行的代码,所以是示出用户控制码没有点(我认为)。
任何想法,将不胜感激。
您需要添加一些代码进行诊断。 –
可能与[this](http://stackoverflow.com/questions/1361033/what-does-stathread-do)问题有关。 – Codor
@Nikita什么代码会有帮助? – wezten