EKThread = new TExcelKassa(true); // создание потока
...
if EKThread <> nil then // проверка существует ли поток.
...
// в OnTerminate потока вписать
EKThread := nil;
Люблю повеселиться, особенно пожрать,
Люблю и поработать, особенно поспать )
Запустил юзер отчет который делается в потоке (отчет долгоиграющий) и минут через пять решил его грохнуть или вообще закрыть приложение. А прежде чем обращаться к потоку
Еще вопрос при EKThread->Terminate(); нужно закрыть созданный объект Excel но при этом происходит ошибка (приложение обратилось к интерфейсу относяящимуся к другому потоку).
Пытался маршалингом (CoMarshalInterThreadInterfaceInStream, и CoGetInterfaceAndReleaseStream) но что-то ума ему дать вообще не могу. Ничего не понял.
Есть другой вариант проверять в потоке Terminated но не вариант он не отрабатывает
всего лишь на всего устанавливает флаг terminated = true
Да ты мне уже говорил я этот флаг и проверяю в потоке. Дело в том что EKThread->Terminate() происходит при закрытии приложения после проверки на EKThread != NULL (кстати если поток уже работал то после уничтожения он не будет NULL) и следам сразу идет закрытие формы а как мне дождатся завершения потока EKThread->WaitFor() (выполняющийся из приложения); вводит "неверный деструктор".
В EKThread делаю
Как вы уже поняли потоки применяю доля создания отчетов в Excel в фоне. Отчеты красивые рисовать много и долго по 400 - 500 строк. Так вот при работе потока процессор загружается на 100% - это нормально? Можно ли как-то разгрузить процессор?