|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
Доброго времени суток всем! Заранее прошу прощения если тема создана не в том разделе. Итак, есть код, который из Excel передает все данные на форму в dataGridView1. Естественно после работы с Эксель нужно выгрузить все его барахло для того чтобы он не висел в процессах. Весь код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Проблема заключается вот в этой строке: Код: c# 1.
Понадобилось путь к файлу засунуть в отдельную переменную. Записал: Код: c# 1.
И после того как я вместо пути прописываю fullpath у меня Excel остается висеть в процессах. Если вернуть все как было, то есть путь напрямую, то все корректно работает. В чем тут может быть проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2016, 21:24 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
player95, уверены, что в правильном порядке выгружаете: Код: c# 1. 2. 3. 4. 5.
может надо наоборот? Сначала выгрузить объекты низшего уровня иерархии, а потом объект приложения? P.S. @"D:\\Эксель.xlsm" - что-то мне кажется, что здесь лишний слеш. Если есть собака перед путем - слеши задваивать не надо. Или ошибаюсь? И почему Код: vbnet 1.
? Почему не Excel.Workbooks? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 13:40 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
Порядок не особо важен. Без 2 палочек была ошибка у меня. Может собачка и лишняя) var, потому что так сделал потом уже не исправлял, переделаю, особого значения не имеет. В общем, решение найдено. Проблема заключалась в том что я запускал все это дело в Debug. Из за этого ссылки не освобождались. Нужно было делать это в релизе. Подробнее тут: http://stackoverflow.com/questions/3937181/when-to-use-releasecomobject-vs-finalreleasecomobject http://stackoverflow.com/questions/15728676/proper-way-of-releasing-com-objects/38111137#38111137 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:45 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
player95var, потому что так сделал потом уже не исправлял, переделаю, особого значения не имеет. Неправильно написал, надо правку сообщений тут разрешить) var тут для того чтобы избежать двойного вызова COM объектов, тоже важно для высвобождения. Подробнее тут: http://stackoverflow.com/questions/17367411/cannot-close-excel-exe-after-interop-process ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:52 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
player95, не понял в чем суть. Там код другой. Через Interop Вы получаете доступ к модели - ничего еще не создается. Вы создаете экземпляр этой строкой: Код: c# 1.
главное при этом, чтобы в объявлениях Using было другое имя, не ExcelApp. И что по мне, то как раз var может провоцировать создание доп.ссылок, т.к. это динамический тип. Что если так попробовать? Код: c# 1.
без Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 15:01 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
Уже проверено что в таком случае не выгружается. У меня так сначала было. Код там практически такой же, сути не меняет) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 18:09 |
|
Выгрузка Excel из процессов - C#
|
|||
---|---|---|---|
#18+
player95в таком случае не выгружаетсяНу странно. У меня выгружается. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:17 |
|
|
start [/forum/topic.php?fid=61&msg=39327850&tid=2172906]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 397ms |
0 / 0 |