C# 我的表格没有在STA中打开
我正在尝试从我的登录表单打开我的主表单C# 我的表格没有在STA中打开,c#,multithreading,winforms,C#,Multithreading,Winforms,我正在尝试从我的登录表单打开我的主表单 Application.Run(new Form1(usernameText.Text)); 但它不是在STA开放的。。因此,主窗体中的myfolderBrowserDialog1将不会打开。我的program.cs中有[statisthread],就在static void Main()的上方,但它仍然不起作用。。。所以我不知道该怎么办 [STAThread] static void Main() { Application.EnableVis
Application.Run(new Form1(usernameText.Text));
但它不是在STA开放的。。因此,主窗体中的myfolderBrowserDialog1
将不会打开。我的program.cs中有[statisthread]
,就在static void Main()
的上方,但它仍然不起作用。。。所以我不知道该怎么办
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new loginForm());
}
以下是Servy对您的回复: 转到program.cs文件并修改它,以便显示登录表单。然后,在它关闭后,确定是否应该打开另一个表单 它可能看起来像这样:
LoginForm loginform = new LoginForm();
Application.Run(loginform);
if (loginform.DialogResult == DialogResult.Yes)
Application.Run(new MainForm());
//TODO handle error cases
有什么问题?发生了什么?我不确定,但我认为调用两次
Application.Run()
是件坏事。不确定这是否导致了你的问题。如果是这样,您可以使用Form.Show()
,并使用Application.Run()
的无参数版本(只需确保在主窗体关闭时使用Application.Exit()
。@SLaks发生这种情况:在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。只有在流程附加了调试器时才会引发此异常。请使用到您的最后一个问题,而不是您接受的问题。您现在正在运行两个消息循环,一个在另一个内部。这通常是要避免的。你的代码在哪里运行?调用堆栈是什么?