Здравствуйте, Danchik, Вы писали:
D>Дружище, не пиши ты эти методы в конструкторе и деструкторе класса, они совсем к нему не относятся Это просто плохой подход.
D>CoInitilaize нужно вызывать единожды для потока а не для класса
D>В Execute методе потока напиши:
D>D>procedure TPayrollParserThread.Execute;
D>begin
D> CoInitializeEx (nil, COINIT_MULTITHREADED);
D> {если будет падать напиши CoInitialize (nil)}
D> try
D> ....
D> finally
D> CoUnitialize;
D> end;
D>end;
D>
D>Я Делфист и незнаю как там в CBuilder релизаются интерфейсы. Вполне возможно что точно также. Если да то x->Release()
D>в деструкторе вызовет креш. Потому что деструктор вызывает Release для своих членов неавно. Один будет явно лишним
D>Удачи!
Спасибо за совет.
Я не хотел так делать, чтобы не создавать экземпляр этого класса динамически в потоке. Это не слишком экономно для такой задачи.
Но я попробовал. Такой ошибки уже нет, зато вся программа работает нестабильно. Через пару десятков запусков потока программа слетает
.