Winform 弹出选择文件对话窗口,线程错误!!!

ghxwzh 2009-09-02 03:59:42
ShowDialog 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。


代码如下

private void btnSelect_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(OpenFiles));
Initlv_Excel();
th.Start();
}
private void OpenFiles()
{
openExcelDialog.Filter = "Text File (*.xls)|*.xls";

this.openExcelDialog.ShowDialog();这里报错

string fileName = this.openExcelDialog.FileName;
txtFile.Text = fileName;

FileListBind(fileName);
}
...全文
249 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppfaq 2009-09-02
  • 打赏
  • 举报
回复
Winform中的控件等多是对以前COM组件的包装,你的子线程要打开一个GUI dialog,也就是说间接用到了COM interop。那些个COM组件都是要求运行在STA线程模型中,so...
qldsrx 2009-09-02
  • 打赏
  • 举报
回复
难道你那个OpenFiles就不能直接执行吗?放在线程里简直就是自找麻烦。这问题都不止一个人问过,怎么就有人喜欢乱用线程。
[quote必须将当前线程设置为单线程单元(STA)模式[/quote]
你要是这么设置了,那还不如使用Show代替ShowDialog()呢,因为都不会等待阻塞线程。
ghxwzh 2009-09-02
  • 打赏
  • 举报
回复
在 vs 2005 的环境里面
merting 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zengfanxing 的回复:]
顶你一个。
[/Quote]

不好意思委托!才说
zgke 2009-09-02
  • 打赏
  • 举报
回复
System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(OpenFiles));
th.SetApartmentState(System.Threading.ApartmentState.STA);
th.Start();
ghxwzh 2009-09-02
  • 打赏
  • 举报
回复
你的Main带[STAThread]了吗?
有的
足球中国 2009-09-02
  • 打赏
  • 举报
回复
[STAThread]
public void main()
{

}
li365941471 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 li365941471 的回复:]
引用 3 楼 chrisak 的回复:
= =调试信息里不是写的很清楚了嘛...
你的Main带[STAThread]了吗?


如果还不行,在入口程序试试加上[STAThread]
[/Quote]

如果还不行,在程序入口试试加上[STAThread]
li365941471 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chrisak 的回复:]
= =调试信息里不是写的很清楚了嘛...
你的Main带[STAThread]了吗?
[/Quote]

如果还不行,在入口程序试试加上[STAThread]
Dobzhansky 2009-09-02
  • 打赏
  • 举报
回复
为啥要启动个线程来选择文件咧
ChrisAK 2009-09-02
  • 打赏
  • 举报
回复
= =调试信息里不是写的很清楚了嘛...
你的Main带[STAThread]了吗?
merting 2009-09-02
  • 打赏
  • 举报
回复
用托管~MSDN里有说到

红街咖啡 2009-09-02
  • 打赏
  • 举报
回复
顶你一个。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧