Перейти к содержимому

Фотография

Помогите убить процесс --- C#Висит в Task Manager


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1
Hudson

Hudson
  • В доску свой
  • 1 378 сообщений
Господа, программисты!
Прога писана на C# - я заливаю данные в Excel!
Открываю книгу:

private Excel.Application appExcel = new Excel.ApplicationClass();
xlsWorkBook = appExcel.Workbooks.Open(.....)
..........
..........
..........
..........
Закрываю:
xlsWorkBook.Close(0, Type.Missing, Type.Missing);
appExcel.Quit();

Заходим в Task Manager - в процессах висит Excel.exe, если пользователь воспользуется моей формой второй раз, то появится второй Excel.exe!
Можно ли как - нибудь убивать Excel в процессах??? :)
Заранее благодарен!
  • 0

#2
7_FoXy

7_FoXy
  • Частый гость
  • 80 сообщений
На сколько я знаю о платформе Net, могу сказать
что Net сама управляет уничтожением объектов
при помощи "сборщика мусора" поэтому у тебя
Excel висит в процессах. А по поводу второй инициализации
Excel попробуй поискать методы которые возвращают указатель на активный объект

сами таким способом боролись с повторным вызовом офисных приложений.
Пример, правда на Pascal

function GetOleObject(ClassName: string): _Application;
begin
try
Result := GetActiveOleObject(ClassName) as _Application;
except
Result := CreateOleObject(ClassName) as _Application;
end;
end;

Попробуй поискать что-то на вроде GetActiveOleObject
  • 0

#3
pauk

pauk
  • Гость
  • 5 сообщений

Цитата из книги Герберта Шилдта :
Если не существует ни одной ссылки на обьект, то предполагается,что этот обьект больше не нужен, и занимаемая им память освобождается.

Поидее должно работать.
appExcel.Quit();
appExcel=null;
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.