Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Tthread и с чем его едят?


Страницы:   1 2 3

malefik ©   (2006-11-08 10:28:00) 

Добрый времени суток!
несложный вопрос....
допустим обьявлен класс унаследованный от tthread. в секции public обьявлено поле типа int.

в приложении при создании формы создается обьект....этого класса....

TMyThread * thread = new TMyThread(false);
могу я после этого обратится к полю...

например
thread->имя_поля

или всю работы всегда проводить через
Synchronize???


DVM   (2006-11-08 10:38:00) [41]

Лучше так как то:

TMyThread = class(TThread)
private
   FCriticalSection: TCriticalSection;
   FMyParam: integer;
   procedure SetMyParam(const AMyParam: integer);
   function GetMyParam: integer;
public
   constructor Create(CreateSuspended: boolean);
   destructor Destroy;  override;
   property MyParam: integer read GetMyParam write SetMyParam;
end;

constructor TMyThread.Create(CreateSuspended: boolean);
begin
 inherited Create(CreateSuspended);
 FCriticalSection := TCriticalSection.Create;
end;

destructor TMyThread.Destroy;
begin
 FCriticalSection.Free;
 inherited Destroy;
end;

procedure TMyThread.SetMyParam(const AMyParam: integer);
begin
 FCriticalSection.Enter;
 try
   FMyParam := AMyParam;
 finally
   FCriticalSection.Leave;
 end;
end;

function TMyThread.GetMyParam: integer;
begin
 FCriticalSection.Enter;
 try
   Result := FMyParam;
 finally
   FCriticalSection.Leave;
 end;
end;


malefik   (2006-11-08 10:37:00) [42]

А что отностится к потоко незащищеным операциям??


DVM   (2006-11-08 10:32:00) [43]


> могу я после этого обратится к полю...
>
> например
> thread->имя_поля

Не стоит так делать.


> Можешь, ничего страшного не произойдет

не факт


DrPass   (2006-11-08 10:30:00) [44]


> могу я после этого обратится к полю...
>
> например
> thread->имя_поля

Можешь, ничего страшного не произойдет. Syncronize - только для потоконезащищенных операций


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо