|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
||||||
.NET 4.x Остаточный процесс EXCEL.EXE06.02.2020, 11:10. Показов 3414. Ответов 13
Метки нет (Все метки)
Здравствуйте товарищи профессионалы! =)
Тем подобных нашел уйму, перепробовал все, чтобы не плодить еще одну тему, не помогает. Программа по функционалу полностью устраивает , не устраивает то, что остается процесс Excel.exe Причем если перезапустить программу и произвести действие после которого он остается и затем закрыть программу, то останется так же 1, единственный процесс. Остается он после того, как Я обрабатываю Drop в ListBox, файлов (хоть 1, хоть нескольких, разницы нет), далее идет проверка, что это файлы *.xls*, происходит поиск нужных столбцов и формируется новая таблица, данные о которой заносятся в ListBox и БД, на основе того же Excel. В обычном режиме процесс закрывается, тоесть при просмотре уже готовых документов, добавлении документа в ручную, создании объектов. В попытках исправить это уже достаточно сильно намусорил в коде))) Есть возможность залить проект если это поможет, часть кода после которой это происходит вряд ли поможет, но то же могу залить (проверил ее на 10 раз) прописывал закрытие каждой открываемой книги, после этого даже прописал на книгу = nothing, хотя это лишнее, объекты Excel.Application повсеместно прописаны .Quit(), затем = nothing, добавлена GC.Collect() в конце той части и при закрытии самой программы... злосчастная часть кода (заранее прошу прощение, код не причесан):
Заметил еще одну странную вещь, при висящем процессе, если открывать другие *.xls файлы которые в программе не использовались создается новый процесс, НО, если открыть любой из вновь добавленных (Drop-нутых) файлов, то процесс остается только один, причем при закрытии этого файла процесс не пропадает... никаких гребаных мыслей... Добавлено через 1 час 12 минут Есть соображения сохранить массив процессов excel созданных при работе программы и при закрытии их kill, только не знаю как это сделать...
0
|
||||||
| 06.02.2020, 11:10 | |
|
Ответы с готовыми решениями:
13
Не могу закрыть процесс excel.exe (не стандартная ситуация) Почему процесс EXCEL.EXE висит даже после уничтожения его переменных
|
|
3260 / 3289 / 556
Регистрация: 17.02.2019
Сообщений: 5,196
|
|||||||||||
| 06.02.2020, 19:49 | |||||||||||
|
попробуй вынести
не закрыв файл
0
|
|||||||||||
|
259 / 200 / 49
Регистрация: 18.12.2015
Сообщений: 416
|
||||||
| 06.02.2020, 20:02 | ||||||
|
Таких тем на форуме много, используйте процедуру выгрузки объектов из памяти:
0
|
||||||
|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
|||||||||||
| 07.02.2020, 09:19 [ТС] | |||||||||||
|
January29,
Выносить пробовал, а вот это условие происходит до объявления переменных с Excel. Application Добавлено через 2 минуты Jungl, тоже пробовал, все равно один единственный процесс остаётся висеть. Причём, сам по себе он завершаться не хочет... Ждал достаточно долго. Добавлено через 10 минут А есть возможность в памяти проверить какие из процессов (Excel) являются скрытими и Kill-нуть их? Добавлено через 1 час 26 минут Пытался сделать так
Добавлено через 1 час 28 минут Пробовал так:
0
|
|||||||||||
| 07.02.2020, 18:55 | ||||||
|
М.б. так получиться
0
|
||||||
|
3260 / 3289 / 556
Регистрация: 17.02.2019
Сообщений: 5,196
|
||||||
| 07.02.2020, 20:03 | ||||||
|
Пробуй
Добавлено через 9 минут закрывает открытые программой
0
|
||||||
|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
|
| 08.02.2020, 04:23 [ТС] | |
|
January29, пробовал, не помогает
![]() Добавлено через 1 минуту ovva, попробую как доберусь до работы)
0
|
|
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
||||||
| 08.02.2020, 06:54 | ||||||
|
Вообще, я тоже такое замечал в своих ПО, и решал задачу таким образом:
1) Вынести функцию создания объекта и открытия и работы с Эксель в отдельный метод 2) На кнопке или в месте, где нужно его открыть и запустить обработку чего-то, ссылался на метод-обертку, созданную в п.1 3) После отработки кода с экселем и закрытии его программным способом в методе, созданном в п.1, в коде кнопки, самой последней строкой указать GC.Collect() 4) После чего, все переменные, которые отработали в том методе (п.1) будут = Nothing и при сборе мусора GC красиво и благополучно его закрывает, без всяких убийств процессов и тому подобного... 5) Эту хрень я заметил давно и данное решение до сих порт работает везде, где я работаю с Эксель. Добавлено через 5 минут Как пример, чтобы было понятно вышеизложенное, покажу логику того, что я наговорил:
А вообще, посмотрел ваш код в первом посте, у вас там все неправильно организовано: 1) Вы открываете Эксель, 2) Перебираете файлы, которые были перенесены мышкой на Листбокс 3) Если файл не XLS, тогда вы сразу же ВЫХОДИТЕ через Exit SubА Эксель то не закрыт, и висит, ожидая дальнейших команд, и тут хоть че делайте в коде, поможет только Kill... Как-то так.
3
|
||||||
|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
|
| 08.02.2020, 11:23 [ТС] | |
|
Yury Komar,
Да, спасибо, Я это тоже заметил и поправил, внёс объявление внутрь цикла for и там же в конце, до next прописал все .close() .quit(), а так же присвоил всем переменным nothing, не помогло, но это действительно более правильная организация
0
|
|
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
||||||
| 08.02.2020, 11:45 | ||||||
Сообщение было отмечено Zhivoder как решение
Решение
Zhivoder, и не помодет, потому что GC.Collect вызывать нужно за пределами того метода, в котором выполняется код.
В вашем случает, нужно весь ваш код вынести в отдельный метод, а уже в методе DragDrop вызывать так:
2
|
||||||
|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
|
| 08.02.2020, 12:03 [ТС] | |
|
Yury Komar, GC.Collect у меня сразу же после цикла, попробую в отдельный метод убрать цикл, но мне кажется сути это не поменяет)
0
|
|
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 08.02.2020, 14:13 | |
|
Zhivoder, Если вы сделаете так, как я описал, то 95% гарантии того, что все получится.
Ну, я дал совет, дальше сами решайте.
0
|
|
|
34 / 30 / 3
Регистрация: 16.12.2019
Сообщений: 110
|
|
| 10.02.2020, 12:57 [ТС] | |
|
Yury Komar,
Спасибо! Перенес в отдельный метод, после него сборщика мусора, пару раз затестил, оба раза в процессах тишина. Был не прав!
0
|
|
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 10.02.2020, 15:54 | |
|
Zhivoder, Ну вот видите как бывает
0
|
|
| 10.02.2020, 15:54 | |
|
Помогаю со студенческими работами здесь
14
Не закрывает процесс Excel.exe не закрывается процесс excel.exe
Процесс svchost.exe или TRACER.exe загружают процессор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Определение даты списания и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: установить период списания автоматически и запретить. . .
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|