Примеры кода из книги Delphi Thread Patterns
https://dalija.prasnikar.info/delphitspatt/
https://dalija.prasnikar.info
Часть 2. Основная библиотека времени выполнения
Глава 5. Регистр управления с плавающей точкой
- Brokenmath.dpr
- Brokenmath.dproj
- Safemath.dpr
- Safemath.dproj
Глава 7.1. Параметры
- Параметры.dpr
- Параметры.dproj
- ParametersMainf.pas
- ParametersMainf.dfm
Глава 8. Классовые поля, синглтоны и экземпляры по умолчанию
- Singletons.dpr
- Singletons.dproj
- Singletonsmainf.pas
- Singletonsmainf.dfm
- Singletonclasses.pas
- Singletonlocal.pas
- Singletonclassprop.pas
- Singletonlazy.pas
Глава 12. Коллекции
- CollectionStest.dpr
- CollectionStest.dproj
- Collectionsmainf.pas
- Collectionsmainf.dfm
Глава 13. Параллельная обработка сбора
Часть 3. Основные рамки
Глава 16. Сериализация
- Serialization.dpr
- Serialization.dproj
- Serializationmainf.pas
- Serializationmainf.dfm
Глава 17. System.net
- NetClient.dpr
- NetClient.dproj
- NetClientMainf.pas
- NetClientMainf.dfm
Глава 19. Инди
- Indy.dpr
- Indy.dproj
- IndyMainf.pas
- IndyMainf.dfm
Глава 20. Отдых
- RESTDEMO.DPR
- RESTDEMO.DPROJ
- Restmainf.pas
- Restmainf.dfm
Глава 21. Регулярные выражения
Часть 5. Графика и обработка изображений
Глава 27. Потребление ресурсов
- Ресурсы.dpr
- Resources.dproj
- Resourcesmainf.pas
- Resourcesmainf.dfm
Глава 30. VCL Graphics Пример
- Images.dpr
- Images.dproj
- Imagesmainf.pas
- Imagesmainf.dfm
Часть 6. Пользовательские рамки
Глава 33. Регистрация
- Nx.log.pas
- Logging.dpr
- Logging.dproj
Глава 34. Токены отмены
- Nx.tokens.pas
- Tokens.dpr
- Tokens.dproj
- Tokensmainf.pas
- Tokensmainf.dfm
ГЛАВА 35. Event Bus
- Nx.horizon.pas
- Horizon.dpr
- Horizon.dproj
- Horizonmainf.pas
- Horizonmainf.dfm
Глава 36. Измерение производительности
- Nx.chronos.pas
- Zerothread.dpr
- Zerothread.dproj
Примечание. Цель представленных примеров состоит в том, чтобы показать код потока-UNSAFE и проблемы, которые могут возникнуть в таком коде, или показывать общие шаблоны кодирования для достижения безопасного потока кода во время работы нескольких потоков. Таким образом, многие из них не реализуют надлежащую очистку при выключении приложения, и если вы закрываете приложение перед началом начала фоновых задач или потоков, выполнив работу, заявление может потерпеть неудачу.
Чтобы выполнить чистое выключение, вам нужно либо дождаться завершения задачи или выполнения потока, либо использовать какой -либо другой механизм, который предотвратит доступ доступа к графическому интерфейсу или другим общим данным во время выключения приложения.
Вы можете найти примеры того, как выключить приложение в https://github.com/dalijap/code-delphi-async Глава 35.2 Очистка по разрушению графического интерфейса