Не удается завершить процесс EXCEL.EXE после открытия и чтения файла Excel - PullRequest
1 голос
/ 09 марта 2011

Я открываю и считываю данные из Excel следующим потоком:

ApplicationClass objApp = new ApplicationClass();  
Workbooks objBooks = objApp.Workbooks;
Workbook objBook = objBooks.Open(..)
// Do something (read data...)
...
objBook.Close(false, Missing.Value, Missing.Value);
objApp.Quit();
Marshal.ReleaseComObject(objBooks);
Marshal.ReleaseComObject(objBook);
Marshal.ReleaseComObject(objApp);
objBook = null;
objApp = null;
GC.Collect();
GC.WaitForPendingFinalizers();

Но после вышеописанного процесса я проверяю в диспетчере задач, что процесс EXCEL.EXE все еще жив, не быть уничтоженным.Пожалуйста, скажите мне, почему, помогите мне найти решение !!!

1 Ответ

0 голосов
/ 30 ноября 2011

Как насчет этого кода

[DllImport("user32.dll")]
private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out IntPtr ProcessId);

После всего вашего кода и когда вам кажется, что файл excel не нужен, напишите этот код

IntPtr hwnd = new IntPtr(ExcelObj.Hwnd); // Your Excel Application name
IntPtr processId;
IntPtr foo = GetWindowThreadProcessId(hwnd, out processId);
Process proc = Process.GetProcessById(processId.ToInt32());
proc.Kill();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...