日期:2014-05-17  浏览次数:20958 次

C# Excel COM插件开发 多线程问题(急急急,求高手指点)
小弟最近在做一个excel 插件,Excel 主要功能是显示处理分析好的数据,
由于分析时间很长,所以要做个把分析过程放在另一个线程中执行,主线程弹出对话框控制分析的运行状态。主要是开始,暂停,继续,停止等操作后台的任务。

现在遇到的问题是,在这个后台进程中操作向excel单元格中写入数据,后就会经常报出异常,不对excel单元格操作就不会报异常,而且在关闭excel后,excel的界面消失了,但是任务管理器中的excel.exe进程还存在


请问这是什么原因呢

------解决方案--------------------
建议把帖子移动到c#板块

------解决方案--------------------
当前excel已经被占用了,你又开个线程处理这个excel 肯定会有问题那 
------解决方案--------------------
1. excel.exe还存在进程这是正常的,操作完Excel之后都会留下,总之我经常碰到,需要KILL掉。
2. 
  2.1 有没可能excel正处理只读模式
  2.2 没你的代码我可能想不到为什么,但多线程情况下能幻想到的应该就是IO流同时写吗?
------解决方案--------------------
多线程环境下调用COM,貌似很难控制吧。建议不要使用COM方式访问Excel。自Office2007开始,微软使用了ZIP和XML技术处理Office文件,微软有提供SDK——>Open XML SDK,网上也有蛮多基于Open XML SDK的封装,推荐一个CloseXML,蛮方便的,与基于COM的编程模式很相似。