Microsoft.Office.Interop.Excel.Application.Quit()がバックグラウンドプロセスを実行したままにするのはなぜですか?

skinnysoftware

次のコードは、プログラムが終了するまで、MicrosoftExcelのバックグラウンドプロセスを実行したままにします。

var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = excelApplication.Workbooks.Open(file.FullName);

workbook.Close();
excelApplication.Workbooks.Close();
excelApplication.Quit();

Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);

どうして?何が足りないのですか?

skinnysoftware

とった!

application.Workbooks!= application.Workbooks

このプロパティは変数を公開せず、値を生成します。したがって、Workbooksプロパティにアクセスするたびに、新しいCOMオブジェクトを作成します。

コードを修正しましたが、すべて順調です。みなさん、ありがとうございます。

var excelApplication = new Application();
var workbooks = excelApplication.Workbooks;
var workbook = workbooks.Open(pathToExcelWorkbook); // Fixed

workbook.Close();
workbooks.Close();
excelApplication.Quit();

Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excelApplication);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ