线程STA模式问题以打开文件资源管理器openFileDialog.ShowDialog()(C#)

线程STA模式问题以打开文件资源管理器openFileDialog.ShowDialog()(C#),c#,openfiledialog,showdialog,C#,Openfiledialog,Showdialog,我一直在到处寻找问题的根源,但什么都没有 基本上,当我运行这个程序时,到了应该打开windows文件资源管理器的时候,它没有 一个代码编辑器在运行时向我显示: System.Threading.ThreadStateException:“在进行OLE调用之前,当前线程必须处于STA(单线程单元)模式。确保将Main标记为stathreadtribute。仅当调试器附加到进程“”时才会触发此异常 不过我还是用了丝线 这是我的密码: [STAThread] publi

我一直在到处寻找问题的根源,但什么都没有

基本上,当我运行这个程序时,到了应该打开windows文件资源管理器的时候,它没有

一个代码编辑器在运行时向我显示:

System.Threading.ThreadStateException:“在进行OLE调用之前,当前线程必须处于STA(单线程单元)模式。确保将Main标记为stathreadtribute。仅当调试器附加到进程“”时才会触发此异常

不过我还是用了丝线

这是我的密码:

        [STAThread]
        public static void Settings()
        {
            var filePath = string.Empty;   
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                do
                {
                    Console.Write(" Upload :");
                    Thread.Sleep(500);
                    openFileDialog.InitialDirectory = "c:\\";
                    openFileDialog.Title = "Upload";
                    openFileDialog.Filter = "Text files|*.txt";
                    openFileDialog.RestoreDirectory = true;
                    openFileDialog.ShowDialog();
                }while (!File.Exists(filePath));
                filePath = openFileDialog.FileName;
            }
        }
如有任何建议或帮助,将不胜感激。
谢谢大家!

线程睡眠(500)
?为什么要这样做?[StatThread]属性只在程序的入口点起作用,Main()睡眠是合理的,在与对话框重叠之前,给用户一个阅读消息的机会。还有其他要求。对话框总是需要一个所有者窗口,一个他们可以停留在上面的窗口。这台五颜六色的控制台能否像一台一样工作,令人怀疑。其结果是,该对话框可以在没有任务栏按钮的情况下回到另一个窗口的后面。statthread是一个承诺,您说您将使用Application.run()运行一个调度程序循环。一个必要的shell扩展的结果是程序可能会死锁。@AluanHaddad允许用户在重叠前有一小段时间阅读消息“请上传您的列表”dialog@HansPassant首先非常感谢您的回答。我尝试过删除彩色控制台和睡眠,但仍然有相同的问题。我想它就像你第一次评论说的那样:只在程序的入口点起作用。