![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем привет!
Столкнулся с проблемой при работе с потоками. Когда во время работающего потока, вызываю Terminate. Для работы с потоками использую библиотеку OmniThreadLibrary (это библиотека для создания многопоточных приложений в Delphi). создаю класс как наследник от TOmniWorker Код:
TTask = class(TOmniWorker) public function Initialize: boolean; override; //здесь инициализирую нужные для работы потока объекты и переменные procedure Cleanup; override; //здесь их разрушаю procedure CountInt; //тут выполняю всякие действия end; Код:
uses OtlThreadPool, OtlTaskControl, OtlEventMonitor, OtlCommon, OtlComm, OtlTask ... pablic Task : IOmniTaskControl; ... Task:=CreateTask(TTask.Create(),'Task ')); //создаю поток Task.Run;//запускаю его Task.Invoke(@TTask.CountInt, []);//выполняю метод CountInt Код:
if Task <> nil then begin Task.Terminate; //завершаем Task:=nil; end; Код:
Task.Terminate(3000); Знающие люди, подскажите что я делаю не так, в какую сторону копать как новичку? |