Может помочь просмотр строки кода, но обычно это сообщение об ошибке (в контексте OLE, которое, как я предполагаю, имеет место здесь) приходит от PowerBuilder, который выполняет вызов OLE, который хост OLE отклоняет.Исходя из предоставленной вами информации, невозможно определить, произошел ли сбой в работе хоста OLE и он больше не отвечает, или вы перевели хост OLE в состояние, когда эти функции больше не применимы, или объект OLEстал недействительным, или что.
Если бы это был я, и это происходило последовательно, я бы запустил приложение в отладчике, чтобы перейти в состояние, в котором может произойти ошибка (вы можете установить расширенные атрибуты в точках останова, чтобы не иметьточки останова активируются каждый раз, когда она передается) и попробуйте опросить объекты OLE.Я ожидаю, что вам также придется добавить некоторый тестовый код, поскольку я не уверен, что все, что вы хотите проверить, будет доступно отладчику.
Новый февраль21
Я бы также изменил набор обрабатываемых файлов, чтобы я мог определить, является ли ключ к сбою определенным файлом или количество обработанных файлов.Например, если вы избавляетесь от первых 100 файлов, происходит ли сбой в 600-м файле (то же количество) или в 500-м файле (тот же файл)?
Одна из возможностей заключается в том, что у вас заканчиваетсяобъем памяти.Каждая «точка» в ссылке OLE (доступ к атрибуту, вызов метода) создает объект в памяти, который не уничтожается до тех пор, пока не будет собран мусор.Выложенный вами фрагмент кода никогда не войдет в блок, где вызывается GarbageCollect () (ll_Excel_Cnt никогда не инициализируется), поэтому вы можете убедиться, что эта часть работает.Я также избавился бы от ненужных звонков.Например, у вас есть несколько вызовов, которые поддерживают состояние Excel в цикле (например, Excel.Application.Visible), когда их нужно вызывать только один раз.Мне также не ясно из фрагмента кода, зачем вам нужно вызывать Save () в любое время;это может быть и расходным.Эта очистка также должна заставить ваш код работать быстрее.
Удачи,
Терри