| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > удаление Excel.exe процесса на сервере |
| Автор: lirikKS86 6.10.2011, 22:42 |
| Добрый день коллеги! При загрузке данных на сервер из Excel столкнулся со следующей проблемой. Пользователь выбирает файл *.xls, после чего он загружается на сервер и считывается с помощью объекта Microsoft.Office.Interop.Excel (примерный код): objExcel = new Excel.Application(); Excel.Workbook objWorkBook = objExcel.Workbooks.Open(strNewPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Excel.Sheets excelsheets = objWorkBook.Worksheets; Excel.Worksheet sheet = (Excel.Worksheet)excelsheets.get_Item(1); while(true) { //считываем файл } Далее закрываю объект objExcel и удаляю загруженный файл: objExcel.Quit(); //удаляем файл File.Delete(strNewPath); Все проходит, а процесс, порожденный вызовом objExcel = new Excel.Application() висит в диспетчере задач с именем EXCEL.EXE. При повторной загрузке, создается еще один процесс с именем EXCEL.EXE. Необходимо как-то по имени загруженного на сервер файла .xls удалить процесс EXCEL.EXE,которым он занят. Буду благодарен за любые идеи и решения этой проблемы. За раннее благодарю за помощь!!!! |
| Автор: jonie 6.10.2011, 23:17 | ||
| objWorkBook.Dispose() делайте + Marshal.ReleaseComObject(objWorkBook) и для ЛЮБЫХ объектов которые вы создавали (включая ранджи и т.д.) Я напомню что xl.Page.Range - тут создаются ДВА объекта - Page и Range. И их оба надо отдельно удалять, т.е. писать так:
|
| Автор: lirikKS86 7.10.2011, 07:30 |
| Большое спасибо jonie. Сейчас попробую реализовать. |