Обычно события Delphi запускаются в основном потоке (элементы управления пользовательского интерфейса) или синхронизируются с основным потоком (TThread.OnTernimate
- событие). Однако это не всегда так.
Модем работает из фонового потока, и его событие также вызывается из фонового потока. С другой стороны, весь доступ к пользовательскому интерфейсу должен быть синхронизирован с основным потоком пользовательского интерфейса.
Класс
TTetheringProfile
(предок TTetheringAppProfile
) имеет свойство SynchronizeEvents
(по умолчанию установлено True
), которое определяет, для какого потока вызываются события. Если True
, то все обработчики событий будут выполняться в контексте основного потока.
Симптомы, которые у вас возникают, согласуются с доступом к пользовательскому интерфейсу из вторичного потока. Проверьте значение свойства SynchronizeEvents
или синхронизируйте доступ пользовательского интерфейса с основным потоком в вашем обработчике событий.