我有一个作业服务器,可以在Excel中自动执行各种报告(使用MS Query)。总是会有一个或多个报告异常结束,只打开一个必须清除的Excel实例。
清理作业使用Interop,如下所示:
Excel.Application xl;
for (int i = 0; i < 20; i++)
{
try
{
xl = (Excelx.Application)Marshal.GetActiveObject("Excel.Application");
xl.Visible = true;
xl.Quit();
}
catch (Exception ex)
{
break;
}
}
它的大多数当时,但每隔一段时间我就会得到一个不想死的Excel实例。我可以在第二天早上手动终止任务管理器中的进程,但我还没有找到一种方法来复制那个在前一天晚上运行的清理工作。
如果有人能指出我如何向上面的工作添加后续任务的方向稍微更“粗鲁”并且会杀死任何名为EXCEL.exe的东西,那么它会很感激提示。
另外,我必须为机器上的每个用户运行此作业。如果有办法,我也欢迎这些反馈。
答案 0 :(得分:0)
看来,关闭流程的蛮力是可行的方法:
foreach (var process in Process.GetProcessesByName("excel"))
{
process.Kill();
}