Excel相互運用機能を使用していますが、呼び出すたびにプロセスが作成されているようです
new Microsoft.Office.Interop.Excel.Application()
そして、私が電話してもプロセスを終了することはありません
xlApp.Quit();
プロセスを終了するにはどうすればよいですか?
Excel相互運用機能を使用していますが、呼び出すたびにプロセスが作成されているようです
new Microsoft.Office.Interop.Excel.Application()
そして、私が電話してもプロセスを終了することはありません
xlApp.Quit();
プロセスを終了するにはどうすればよいですか?
すべての参照をリリースしていますか?(つまり、そもそもそれらを保存する必要があります)。
たとえば、Excelのinterop()からの私の処分には次のようなものがあります。
public void Dispose()
{
if(!this.disposed)
{
if(cell != null)
Marshal.FinalReleaseComObject(cell);
if(cells != null)
Marshal.FinalReleaseComObject(cells);
if(worksheet != null)
Marshal.FinalReleaseComObject(worksheet);
if(worksheets != null)
Marshal.FinalReleaseComObject(worksheets);
if (workbook != null)
{
workbook.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(workbook);
}
Marshal.FinalReleaseComObject(workbooks);
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp);
GC.Collect();
GC.WaitForPendingFinalizers();
disposed = true;
}
}
(これが完璧かどうかはわかりませんが、私にとってはうまくいきました!)
使用済みのCOMオブジェクトを解放しないと、Excelは終了しません。
ほとんどの場合、これは、ドキュメントを変更し、Excelが保存を待機しているために発生します。次のようなものを試してください:
ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges,
Type.Missing, Type.Missing);
やめる前に