Че то с потоками
вообщем у этого компонента свойство:
private
Factie:boolean;
procedure SetActive(value:boolean);
published
...
property Active:boolean;
read Factive
write SetActive;
procedure ThreadFunc(Data:pointer);//здесь и stdcall добавлял
begin
showmessage('test my Thread');
end;
procedure MyComponent.SetActive(value:boolean);
begin
.............
MyThread:=CreateThread(nil,0,@ThreadFunc,nil,0,MyThreadID);//здеся создаю новый поток
.........
end;
Вообщем при установке active=true делфа загинается конкретно,,, вылетает и все
Че за дела не могу понять.
Сейчас во время написания этой темы у меня мысля возникла а мож это проблемка с showmessage
Подскажите кто знает в чем косяк!!
Спасибо:) :)
Дочерний поток не должен использовать методы и свойства визуальных компонентов.Точнее он может это делать только при обращении к специальному методу Synchronize. Или посылая сообщение (типа PostMessage(); ) главному потоку.
Цитата:
Originally posted by OlegIM
Дочерний поток не должен использовать методы и свойства визуальных компонентов.Точнее он может это делать только при обращении к специальному методу Synchronize. Или посылая сообщение (типа PostMessage(); ) главному потоку.
Дочерний поток не должен использовать методы и свойства визуальных компонентов.Точнее он может это делать только при обращении к специальному методу Synchronize. Или посылая сообщение (типа PostMessage(); ) главному потоку.
Чтобы создать поток в делфи лучше пользоваться BeginThread, а функция нитки - это функция с прототипом function (Param: pointer): integer; и никаких стд-коллов - это для BeginThread. CreateThread а будет требовать stdcall.
тобы выплнить синхронизацию с главным потоком приложения нада выполнять TThread.Synchronyze(nil, MyProc);