|
![]() |
#1 |
Участник
|
Цитата:
Другими словами, поскольку Вы не выявили причину подобного поведения, то, скорее всего, через некоторое время ситуация повторится. И потоки уже не спасут... Увеличение времени обработки говорит лишь о том, что были использованы все ресурсы компьютера. Он вынужден тратить время на очистку каких-либо временных данных или сбросе части данных на винт. Прежде всего, это говорит о не оптимально построенной процедуре обработки. Она требует слишком больших ресурсов. Вот в этом направлении и надо смотреть. А использование потоков - это Вы просто дырку заткнули... Пока напор не возрастет, еще будет работать...
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#2 |
Участник
|
Не, я таки настаиваю - оно прирастает, сделайте побольше сom-вызовов в вашем джобе (см скрин). Про ресурсы компьютера это вообще.. я ж писал - проц отдахыет, память не растет, пямяти у меня 8 гиг.
|
|
![]() |
#3 |
Участник
|
Цитата:
X++: excel.closeDocument(false); PS: Кстати, для справки. В версии Ax2009 в классе ComExcelDocument_RU создали в ClassDeclaration переменную comWorkSheets. Однако в методе closeDocument() эта переменная не обнуляется. Отсюда возникают глюки после первого закрытия документа, поскольку не срабатывает метод getWorkSheets(), где как раз-таки этой переменной и должны присвоить значение. Для лечения "по быстрому" надо в методе ComExcelDocument_RU.closeDocument() после успешного закрытия документа добавить пару строчек X++: m_comDocument = null; comWorkSheets = null; ![]() X++: // Учет возможности работы с несколькими книгами в одном экземпляре Excel в классе ComExcelDocument_RU public void closeDocument(boolean _save = false, int _workBook = 1) { COM comWorkBooks; COM comWorkBook; // RTG, 19.12.2005, МВБ --> int countWorkBooks; // количество рабочих книг boolean isClosedSelectedWorkBooks; // Закрывается ли текущая рабочая книга // RTG, 19.12.2005, МВБ <-- try { if (m_comApplication) { m_comApplication.cutCopyMode(false); // 08.04.2004, Использование нескольких листов comWorkBooks = m_comApplication.workBooks(); // RTG, 19.12.2005, МВБ --> /* comWorkBook = comWorkBooks.item(_workBook); comWorkBook.close(_save); */ countWorkBooks = comWorkBooks.Count(); if (_workBook > 0 && _workBook <= countWorkBooks) { comWorkBook = comWorkBooks.item(_workBook); isClosedSelectedWorkBooks = (comWorkBook.name() == m_comDocument.name()); comWorkBook.close(_save); } if (isClosedSelectedWorkBooks) { countWorkBooks = comWorkBooks.Count(); if (countWorkBooks) { m_comDocument = comWorkBooks.Item(countWorkBooks); } else { m_comDocument = null; comWorkSheets = null; } } // RTG, 19.12.2005, МВБ <-- return; } } catch (Exception::Error) { exceptionTextFallThrough(); } catch(Exception::Internal) { exceptionTextFallThrough(); } error(this.getCOMErrorMsg()); if (comWorkBook) { comWorkBook.detach(); } if (comWorkBooks) { comWorkBooks.detach(); } }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 03.02.2012 в 20:37. |
|
|
За это сообщение автора поблагодарили: Maxim Gorbunov (2). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|