我用C#代码打开了excel文件,当我手工关掉excel文件后,进程中还有Excel进程,为什么?
怎么样才让进程中没有它呢?

解决方案 »

  1.   

     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);                
             }
     }
      

  2.   

    我原先也遇到了这样的问题,不过没必要像2楼的那么麻烦,只要在调用完Excel后调用GC.Collect()强制进行垃圾回收即可。最好用try..catch..finally来调用Excel,GC.Collect()放在finally块中。
      

  3.   

    我加了
    GC.Collect();
    也没有用呀。
    我如果用手工结束那个进程exce文件也会关,如果我手动关excel进程就还在。
      

  4.   

     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
    需要手动销毁的!!