使用FolderBrowserDialog时出现异常。
使用FolderBrowserDialog时出现异常。
当尝试使用FolderBrowserDialog时,我遇到了以下异常:
System.Threading.ThreadStateException: 在进行OLE调用之前,当前线程必须设置为单线程公寓(STA)模式。请确保您的Main函数上已经标记了STAThreadAttribute。只有在调试器附加到进程时,才会引发此异常。
我已经广泛地搜索了这个问题,并且每个人提出的解决方案似乎都是在Main方法上方添加[STAThreadAttribute]
,从Debug文件夹中删除所有的dll文件,或者使用Invoke
方法。我尝试了所有这些方法,但仍然遇到相同的异常。
以下是代码:
public partial class Form1 : Form { public event EventHandler ChooseLocationHandler = null; public string DestFolder { set { textBox1.Text = value; } get { return textBox1.Text; } } public Form1() { InitializeComponent(); } private void ChooseLocationButton_Click(object sender, EventArgs e) { if (ChooseLocationHandler != null) ChooseLocationHandler(this, e); } }
在我的Presenter中是以下代码:
public partial class Presenter { Form1 myForm; public Presenter() { myForm = new Form1(); myForm.ChooseLocationHandler += ChooseLocationHandler; myForm.Show(); } public void ChooseLocationHandler(object obj, EventArgs e) { Form1 sender = (Form1)obj; FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.RootFolder = System.Environment.SpecialFolder.MyComputer; fbd.ShowNewFolderButton = true; if (fbd.ShowDialog() == DialogResult.Cancel) return; sender.DestFolder = fbd.SelectedPath; } }
在fbd.ShowDialog()处我遇到了异常。