2
所以基本上我爲我的程序做了一個登錄系統,當用戶登錄它時,它打開了Form1。但我需要Form1作爲STA線程。 我在Form1中收到此錯誤:新窗體上的STAThread錯誤(SaveFileDialog)
{「當前線程必須設置爲單線程單元(STA)之前OLE調用可製成模式確保您的主要功能有請將STAThreadAttribute上標註此異常。如果一個調試器附加到進程,纔會引發。「} 在這段代碼
SaveFileDialog FSave = new SaveFileDialog()
{
Filter = "Executable Files|*.exe",
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
};
if (FSave.ShowDialog() == DialogResult.OK)//im getting the error here
{
// CodeDom compiler code
}
這是我的Program.cs
using System;
using System.Windows.Forms;
namespace hwid_login_system
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
}
}
這就是我在形式上登錄
private void complete()
{
if (loggedin && hwid)
{
MessageBox.Show("Logged in successfully!");
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
t.Start();
this.Close();
}
else
MessageBox.Show("Something else went wrong..", "Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
public static void ThreadProc()
{
Application.Run(new Form1());
}
你是從另一個線程調用FSave.ShowDialog()嗎? – tHand
如何更新我的形式登錄 – NaniDev
打開Form只是anwsere我自己的問題:d 接着說:t.SetApartmentState(ApartmentState.STA);'運行它作爲一個STA線程 – NaniDev