Использование главного CLX-потока

Когда вы применяете в своем приложении объекты из библиотеки визуальных компонентов, то вам нужно иметь в виду, что свойства и методы объектов из CLX не гарантируют потоковую безопасность.

В случае, когда все объекты обращаются к своим свойствам и выполняют свои методы в одном потоке, вам не нужно беспокоиться о том, что объекты будут создавать друг другу помехи.

Для использования главного CLX-потока создайте отдельную процедуру, которая выполняет необходимые действия. А затем вызовите эту процедуру из вашего потокового модуля (внутри метода Execute), применив синхронизацию. Например, как представлено в листинге 14.7.

Листинг 14.7. Использование синхронизации

procedure TMyThread.PushTheButton; 
begin
Button1.Click; end;
procedure TMyThread.Execute; begin
. . . Synchronize(PushTheButton);
. . .
end;

Метод синхронизации защитит ваше приложение от ситуации "гонки".

Ситуация "гонки" возникает, когда два потока или более пытаются получить доступ к общему ресурсу и изменить его состояние.

Примечание

Метод синхронизации не может использоваться в консольных приложениях Для защиты одновременного доступа к CLX-объектам в консольных приложениях вы должны использовать другие методы, такие как критические секции

В некоторых случаях вы можете обходиться без метода синхронизации, например, если:

Hosted by uCoz