Да .
Свойства на самом деле являются синтаксическим сахаром для вызовов функций.Чтение одного также означает, что функция вызывается ( хорошо, большую часть времени [1] ).
Другими словами, если в вашем коде вы делаете:
x = MyVCLObj->SomeProperty;
компилятор C ++ Builder фактически генерирует вызов (обычно частной) функции-получателя для свойства:
x = MyVCLObj->GetSomeProperty();
, который выполняется в контексте основногонить, поэтому к нему нужно обращаться, используя Synchronize()
.
[1] Я знаю, что это не так для всех свойств, и вы вполне можете получить доступ к полю-члену (например, FSomeProperty
) напрямую, но вы действительно хотите каждый раз проверять документы?И это может измениться в будущей версии класса тоже.Таким образом, вы обычно должны рассматривать доступ к свойству как вызов функции.