2

基本的に、プログラムのログインシステムを作成しました。ユーザーがログに記録すると、Form1が開きます。しかし、Form1 を STA スレッドにする必要があります。Form1 で次のエラーが発生します。

{"OLE 呼び出しを行う前に、現在のスレッドをシングル スレッド アパートメント (STA) モードに設定する必要があります。Main 関数に 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());
        }
    }
}

これは、フォームログインでフォーム Form1 を開く方法です

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());
    }
4

1 に答える 1