jjzjj

ReleaseComObject

全部标签

C# = 为什么 Excel 进程没有结束?

我有以下代码:privateboolIsMousetrapFile(stringpath){logger.Log(validateFileMessage+path);Excel.ApplicationxlApp=newMicrosoft.Office.Interop.Excel.Application();Excel.Workbooksworkbooks=xlApp.Workbooks;Excel.WorkbookxlWorkBook=workbooks.Open(path,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type

c# - 什么时候需要在 C# 中通过 COM 查询的接口(interface)上调用 Marshal.ReleaseComObject

我一直在使用一些DirectShow接口(interface)来使用C#和DirectShow.Net播放数字电视(DVB-T).我最近遇到运行时错误COMobjectthathasbeenseparatedfromitsunderlyingRCWcannotbeused.此错误发生在以下行中:_guideData=_transportInformationFilterasIGuideData;_transportInformationFilter属于IBaseFilter类型,这是一个先前通过DirectShow.Net实用程序函数分配的COM对象。我假设错误是由于_transpor

c# - 为什么 Microsoft.Office.Interop.Excel.Application.Quit() 让后台进程继续运行?

以下代码使MicrosoftExcel后台进程继续运行,直到我的程序退出:varexcelApplication=newApplication();varworkbooks=excelApplication.Workbooks;varworkbook=excelApplication.Workbooks.Open(file.FullName);workbook.Close();excelApplication.Workbooks.Close();excelApplication.Quit();Marshal.ReleaseComObject(workbook);Marshal.Rele

c# - 如何在没有安装 MS Office 的机器上使用 Microsoft.Office.Interop.Excel?

我正在编写一个处理excel文件的应用程序。我需要一个功能来删除工作表。我必须使用程序集Microsoft.Office.Interop.Excel.dll。它在开发者机器上运行良好,但是当我尝试将它部署到服务器上时出现错误:Couldnotloadfileorassembly'office,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'oroneofitsdependencies我了解当计算机上未安装MSOffice时会出现问题。客户不想不惜任何代价在服务器上安装和购买MSOffice。我按照此处的建

c# - 如何在没有安装 MS Office 的机器上使用 Microsoft.Office.Interop.Excel?

我正在编写一个处理excel文件的应用程序。我需要一个功能来删除工作表。我必须使用程序集Microsoft.Office.Interop.Excel.dll。它在开发者机器上运行良好,但是当我尝试将它部署到服务器上时出现错误:Couldnotloadfileorassembly'office,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c'oroneofitsdependencies我了解当计算机上未安装MSOffice时会出现问题。客户不想不惜任何代价在服务器上安装和购买MSOffice。我按照此处的建

c# - 何时使用 ReleaseComObject 与 FinalReleaseComObject?

这个问题在这里已经有了答案:WhyuseFinalReleaseComObjectinsteadofReleaseComObject?(1个回答)关闭8年前。我应该什么时候使用Marshal.FinalReleaseComObject对比Marshal.ReleaseComObject?使用Marshal.FinalReleaseComObject有什么危险吗?

c# - 是否需要使用 Marshal.ReleaseComObject 释放*每个* Excel 互操作对象?

编辑另请参阅HowdoIproperlycleanupExcelinteropobjects?.我最近遇到了这个问题,它提供了很多关于如何正确处理COM对象的问题的见解。一定要检查第一个(标记的)答案,因为其他答案超出了简单的“不要使用两个点”和“对每个com对象使用ReleaseComObject”的建议。我首先重新审视了这个问题,因为我意识到,尽管我对所有COM对象的注册和处置都非常彻底,但我的Excel实例仍然没有得到正确处置。事实证明,有一些方法可以创建完全不明显的COM对象(即,即使您从不使用两个点,也可能会错过COM对象)。此外,即使你很彻底,如果你的项目增长超过一定规模,