2013-01-04 63 views
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(); 
} 

但我不知道怎麼殺人的過程,我開始。

回答

1

我認爲你需要釋放你的Excel COM對象上,才能正確地關閉

Marshal.FinalReleaseComObject(xlWorkSheet); 
xlWorkBook.Close(false); 
Marshal.FinalReleaseComObject(xlWorkBook); 
xlApp.Quit(); 
Marshal.FinalReleaseComObject(xlApp) 
1

在創建過程中,儘量保持它在一個可變的處理,如使用CreateProcess的API將返回HANDLE要使用該HANDLE創建流程,您始終可以使用GetProcessID API獲取流程ID。