我一直想知道如何使用控制台应用程序浏览到目录并将所选路径保存到字符串变量中?我尝试过一些东西,但似乎都没有。这是我的代码:
string path = "";
FolderBrowserDialog fileDialog = new FolderBrowserDialog();
var result = fileDialog.ShowDialog(); //exception
if (result == DialogResult.OK)
{
path = fileDialog.SelectedPath;
}
Console.WriteLine(path);
它会在行ThreadStateException
处抛出3
个异常。
“在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。仅当调试器附加到进程时才会引发此异常。”
答案 0 :(得分:4)
您似乎试图在MTA
(多线程公寓)中运行的控制台应用程序中使用此功能,而FolderBrowserDialog
控件需要STA
(单线程公寓)。
要将您的控制台应用程序放入STA,请尝试使用[STAThread]
属性装饰Main
方法:
class Program
{
[STAThread]
static void Main()
{
string path = "";
var fileDialog = new FolderBrowserDialog();
var result = fileDialog.ShowDialog();
if (result == DialogResult.OK)
{
path = fileDialog.SelectedPath;
}
Console.WriteLine(path);
}
}