1

閉じないExcelアプリケーションがあります。これは私のコードです

    xlApp = new Excel.Application();
    Workbooks = xlApp.Workbooks;
    xlWorkBook = Workbooks.Open(FileUpload1.PostedFile.FileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
--------------------------------------------------------
    xlWorkBook.Close(false);
    xlApp.Quit();

そして今、このようなExcelプロセスを殺そうとします:

Process[] exProc = Process.GetProcessesByName("EXCEL");
foreach (Process proc in exProc)
{
   proc.Kill();
}

しかし、私が始めたプロセスを強制終了する方法がわかりません。

4

2 に答える 2

1

正しく閉じるには、ExcelCOMオブジェクトを解放する必要があると思います

Marshal.FinalReleaseComObject(xlWorkSheet);
xlWorkBook.Close(false);
Marshal.FinalReleaseComObject(xlWorkBook);
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp)
于 2013-01-04T03:26:42.593 に答える
1

プロセスを作成するときは、そのハンドルを変数に保持するようにしてください。たとえば、CreateProcess APIを使用すると、作成したプロセスにHANDLEが返され、そのHANDLEを使用すると、GetProcessIDAPIを使用して常にプロセスIDを取得できます。

于 2013-01-04T03:27:31.300 に答える