Мой сервер должен распечатать несколько отчетов о своей работе. Как я могу использовать визуальные объекты, такие как метки, поля редактирования в событии OneEecute?Как использовать визуальный контроль в Indy? (Delphi)
3
A
ответ
3
То же самое правило для не изменяющих объектов VCL в любом потоке, кроме основного потока, также здесь. Вы не должны изменять какой-либо элемент управления VCL в обработчике событий OnExecute, потому что этот код будет запущен в контексте рабочего потока, созданного Indy для каждого соединения.
Если вам нужно изменить графический интерфейс пользователя, сделайте это с помощью методов синхронизации или очереди или используйте специальный механизм уведомления для уведомления основного потока о внесении изменений в графический интерфейс пользователя.
Если вы хотите вызвать Синхронизировать или Очередь методу, вы должны ввести отливку TIdYarn к TIdYarnOfThread, которая вытекает из TIdYarn и реализует его с потоками:
// Calling MyMethod using Synchornize inside TIdTcpServer.OnExecute event-handler
TIdYarnOfThread(AContext.Yarn).Thread.Synchronize(MyMethod);
// Calling MyMethod using Queue inside TIdTcpServer.OnExecute event-handler
TIdYarnOfThread(AContext.Yarn).Thread.Queue(MyMethod);
Смежные вопросы
- 1. создать визуальный контроль activex с delphi
- 2. Delphi Indy IRC
- 3. MultiPartEntity in Indy [Delphi]
- 4. Проверка потока Delphi - Indy
- 5. Delphi Indy LAN Chat
- 6. Delphi Indy CookieManager Wordpress
- 7. Delphi Использование Indy 10
- 8. Delphi: Indy TIdTCPClient Чтение XML
- 9. Delphi indy streaming Http Server
- 10. Как заблокировать неизвестные клиенты в indy (Delphi)
- 11. Indy 10 для Delphi 7
- 12. Delphi и Indy с SSL
- 13. Delphi indy call php script
- 14. Delphi/Indy IdHttpServer не многопоточен?
- 15. Delphi + Indy: Соединение закрыто изящно
- 16. Delphi XE7 Android Indy IRC
- 17. Delphi Indy ReadLn с таймаутом
- 18. Delphi Indy post error 501
- 19. Delphi - Indy - экономия GMail draft
- 20. Delphi 2007 с Indy 9
- 21. Delphi XE2 Indy IRC Unicode
- 22. Delphi Indy Attachments не работает
- 23. Delphi 7 + Indy + Многопоточные клиенты
- 24. Delphi indy получить содержимое страницы
- 25. Delphi 7 Indy 10 ioHandler
- 26. Delphi XE3 indy 10 UDP
- 27. Можно ли использовать Indy 10.5.8.0 в Delphi XE и DataSnap?
- 28. Delphi 2007 & Обновленный Indy 10
- 29. Delphi: Indy TIdTCPClient Чтение данных
- 30. Как использовать Md5 в Indy?
TThread имеет статические Синхронизировать() и Queue() методы в D7 +, поэтому вам не нужно напрямую обращаться к внутренним компонентам пряжи. Кроме того, вместо этого используйте классы Indy's TIdSync и TIdNotify, которые обрабатывают эти данные для вас. – 2010-11-30 22:04:18