当在一个线程中使用 OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog(); 会报如下错误:
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

解决办法:
1.将跨线程操作检查设置成false , 不建议这么做

Control.CheckForIllegalCrossThreadCalls = false;
  1. 对于 调用ShowDialog方法可以用this.Invoke(new Action(()=>{}));包围起来,让主线程去调用。
Task.Run(()=>{//...this.Invoke(new Action(()=> {SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Title = "保存文件";saveFileDialog.FileName = "save.txt";if (saveFileDialog.ShowDialog() == DialogResult.OK){//...}}));
});
  1. 通过设置线程的SetApartmentState(ApartmentState.STA)
Thread thread = new Thread(Receive);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();private void Receive()
{SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Title = "保存文件";saveFileDialog.FileName = "save.txt";if (saveFileDialog.ShowDialog() == DialogResult.OK){//....}
}

在线程中调用OpenFileDialog/SaveFileDialog报错处理方法相关推荐

  1. MFC子线程中调用updatedata()函数报错解决方法

    在XXXDlg.h顶部添加 #define WM_UPDATEDATA WM_USER+100 关联自定义消息,在XXXDlg.cpp中消息处理函数中添加 ON_MESSAGE(WM_UPDATEDA ...

  2. python3中调用map函数报错map object at 0x000001EF004D97B8

    python3中调用map函数报错<map object at 0x000001EF004D97B8> 在python中这样的一段代码报错: a=map(int,input().split ...

  3. uex2中使用mapMutations/mapActions报错解决方法 BabelLoaderError: SyntaxError: Unexpected token

    1.问题 在尝鲜vuex2时,发现vuex2增加了 mapGetters 和 mapActions 的方法,借助stage2的 Object Rest Operator 特性,可以写出下面代码: co ...

  4. python中调用linux命令报错cat: -: Bad file descriptor

    在python脚本中国呢调用linux命令,nohup提交报错 cat: -: Bad file descriptor 但是,结果能正常输出, 没找到原因---

  5. 报错解决方案参考:《xv6分析与实验》中关于qemu运行报错解决方法

    在获取了xv6源码之后,且安装了qemu sudo apt-get install qemu 编译并运行qemu时 make qemu# 编译通过 # 运行报错: *** Error: Couldn' ...

  6. oracle 归档日期,Oracle中归档日期满报错解决方法

    最近在工作的时候操作数据库常会遇到这样的问题:"ORA-00257 archiver error. Connect internal only, until freed",百度搜了 ...

  7. 在线程中调用SaveFileDialog

    在线程中调用SaveFileDialog 在多线程编程中,有时候可能需要在单独线程中执行某些操作.例如,调用SaveFileDialog类保存文件.首先,我们在Main方法中创建了一个新线程,并将其指 ...

  8. 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)

    一.背景 接口定义: @ApiOperation(value = "分页查询会话") @PostMapping(Routes.SESSIONS_QUERY) JsonResult& ...

  9. 13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition

    13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition 问题描述: [ERROR] /Users/ ...

最新文章

  1. linux用户、组、权限问题
  2. face recognition[翻译][深度人脸识别:综述]
  3. ButterKnife 8.4.0 @BindView 失败,nullpointerexception
  4. 集美大学java考试题_我的JAVA习题集2
  5. 《精通J2EE网络编程》中讲的JNDI 6.1 什么是JNDI
  6. 12行代码AC——例题6-6 小球下落(Droppint Balls, UVa 679)——解题报告
  7. 广东东软学院计算机系主任罗,广东东软学院副校长朱爱红一行来访我校
  8. redis基础一_常用指令
  9. DBA生存警示:防范频发的数据误删除操作
  10. Scala学习笔记03:操作符
  11. as3实现(可以操纵的)真正的由惯性导致的漂移
  12. 用VS调试 javascript
  13. 2021级南航计算机专硕829备考记录
  14. 微信公众号推送模板消息(三):获取关注者列表 openid
  15. 西藏拉姆拉错:蓝蓝的湖水
  16. element Descriptions 内容超出隐藏 Tooltip展示完整内容
  17. oracle 12c导入dmp文件(实践)
  18. matlab画椭圆抛物面参数方程,求单叶双曲面和双叶双曲面、椭圆抛物面、双曲抛物面用matlab怎么画或其参数方程?...
  19. 利用遗传算法库DEAP优化交易策略
  20. 我和Double Lift的故事(三)——应用篇

热门文章

  1. KiCAD 6.0导入元件库及3D模型
  2. 2019.9.21-冒泡排序代码
  3. JavaScript 字符串不变性
  4. 行业分析| 新的学习方式——在线自习室
  5. Block背后的数据结构及变量截取
  6. jade选峰之后怎么去掉_jade怎么把峰标出来
  7. Task3:Selenium模块学习及丁香园模拟登录爬取留言板
  8. 上海儿童游玩/购物好去处
  9. 广州金蝶财务软件|番禺金蝶财务软件|金蝶迷你版特价优惠中
  10. 【Kafka】三.Kafka怎么保证高可用 学习总结