C#利用com操作excel释放进程的解决方法
- 作者: 小雅baby
- 来源: 51数据库
- 2021-08-25
第一个
复制代码 代码如下:
system.runtime.interopservices.marshal.releasecomobject(sheets);
system.runtime.interopservices.marshal.releasecomobject(worksheet);
system.runtime.interopservices.marshal.releasecomobject(excelapp);
system.runtime.interopservices.marshal.releasecomobject(range);
excelapp = null;
wbclass = null;
sheets = null;
worksheet = null;
range = null;
gc.collect();
gc.waitforpendingfinalizers();
释放不彻底,还是有进程存在。
第二种
复制代码 代码如下:
//调用底层函数获取进程标示
[dllimport("user32.dll")]
public static extern int getwindowthreadprocessid(intptr hwnd, out int processid);
private static void killexcel(microsoft.office.interop.excel.application theapp)
{
int id = 0;
intptr intptr = new intptr(theapp.hwnd);
system.diagnostics.process p = null;
try
{
getwindowthreadprocessid(intptr, out id);
p = system.diagnostics.process.getprocessbyid(id);
if (p != null)
{
p.kill();
p.dispose();
}
}
catch (exception ex)
{
}
}
这个方法比较好,我试过了可以关闭掉进程。
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
