• 在ASP.Net中如何彻底杀死Excel进程


    今天在一个项目中使用Dcom的方式获取数据,但是发现Excel进程有时候能杀死,有时候杀不死,导致上传文件时出错的偶发性BUG,经过多次测试,调用API的方式可以彻底杀死Excel进程的方法!

    方法体:

      [DllImport("User32.dll", CharSet = CharSet.Auto)]
            public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
            public static void KillExcel(Excel.Application excel)
            {
                IntPtr t = new IntPtr(excel.Hwnd); //得到这个句柄,具体作用是得到这块内存入口
                int k = 0;
                GetWindowThreadProcessId(t, out k); //得到本进程唯一标志k
                System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用
                p.Kill(); //关闭进程k
            }

    方法调用:

     Excel.Application app = null;
                Excel.Workbook workBook = null;
                Excel.Worksheet workSheet = null;
                object Missing = Type.Missing;

                    app = new Excel.ApplicationClass();
                    app.Workbooks.Close();
                    app.Workbooks.Open(fileName, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing, Missing,
                        Missing, Missing, Missing, Missing);
                    workBook = app.Workbooks[1] as Excel.Workbook;
                    workSheet = workBook.Worksheets[1] as Excel.Worksheet;

    …………
                   workBook.Close(false, fileName, Missing);//关闭worksheet
                    app.Workbooks.Close();//关闭workbook
                    Marshal.ReleaseComObject(workBook);
                    app.Quit();
                    KillExcel(app);//彻底杀死Excel进程!

  • 相关阅读:
    vsftpd用户登陆目录
    Linux下能否用用apache运行ASP.NET的WebService
    rose软件下载(Rational Rose 2003 Enterprise Edition)
    linux删除目录
    2013314 生活日记
    ubuntu12.10安装GTK+
    SqlServer 基础知识数据检索、查询排序
    获取时间段:本周、本月、本年
    二、自定义控件之RadioButtonList
    ext.net 开发学习之FileUploadField与Image (四)
  • 原文地址:https://www.cnblogs.com/zhangxb/p/2460739.html
Copyright © 2020-2023  润新知