Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление Excel.exe процесса на сервере, удаление Excel.exe процесса на сервере 
:(
    Опции темы
lirikKS86
Дата 6.10.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.10.2011

Репутация: нет
Всего: -1



Добрый день коллеги!
При загрузке данных на сервер из 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,которым он занят. 
    Буду благодарен за любые идеи и решения этой проблемы. За раннее благодарю за помощь!!!!
PM MAIL   Вверх
jonie
Дата 6.10.2011, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



objWorkBook.Dispose() делайте +  Marshal.ReleaseComObject(objWorkBook) и для ЛЮБЫХ объектов которые вы создавали (включая ранджи и т.д.)

Я напомню что xl.Page.Range - тут создаются  ДВА объекта - Page и Range. И их оба надо отдельно удалять, т.е. писать так:
Код

var page = xl.Page;
var range = page.Range;
...
range.Dispose();
Marshal.ReleaseComObject(range);

page .Dispose();
Marshal.ReleaseComObject(page);
....
xl.Quit();
  GC.GetTotalMemory(false);  
  GC.Collect();  
  GC.WaitForPendingFinalizers(); 
  GC.Collect();  
  GC.GetTotalMemory(true);  



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
lirikKS86
Дата 7.10.2011, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.10.2011

Репутация: нет
Всего: -1



Большое спасибо jonie. Сейчас попробую реализовать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.