C#操作excel进程关不了的问题

postfxj 2009-02-18 02:10:04
我用C#代码打开了excel文件,当我手工关掉excel文件后,进程中还有Excel进程,为什么?
怎么样才让进程中没有它呢?
...全文
223 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu5623 2009-09-15
  • 打赏
  • 举报
回复
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);//Excel.Application xlApp
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);//Workbooks workbooks
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);//Workbook workbook
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
//Worksheet worksheet
需要手动销毁的!!
postfxj 2009-02-18
  • 打赏
  • 举报
回复
顶一下。
postfxj 2009-02-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tryanother 的回复:]
我原先也遇到了这样的问题,不过没必要像2楼的那么麻烦,只要在调用完Excel后调用GC.Collect()强制进行垃圾回收即可。最好用try..catch..finally来调用Excel,GC.Collect()放在finally块中。
[/Quote]
我加了
GC.Collect();
也没有用呀。
我如果用手工结束那个进程exce文件也会关,如果我手动关excel进程就还在。
tryanother 2009-02-18
  • 打赏
  • 举报
回复
我原先也遇到了这样的问题,不过没必要像2楼的那么麻烦,只要在调用完Excel后调用GC.Collect()强制进行垃圾回收即可。最好用try..catch..finally来调用Excel,GC.Collect()放在finally块中。
postfxj 2009-02-18
  • 打赏
  • 举报
回复
要这样关吗?
最爱咖啡 2009-02-18
  • 打赏
  • 举报
回复
private void killProcess(string processName)
{
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
try
{
foreach (Process thisproc in Process.GetProcessesByName(processName))
{
if (!thisproc.CloseMainWindow())
{
thisproc.Kill();
}
}
}
catch (Exception Exc)
{
throw new Exception("关掉进程出错!", Exc);
}
}

110,536

社区成员

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

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

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