Поговорим сегодня про компоненты для Embarcadero RAD Delphi, а именно о ODAC – oracle data access components. Если быть точней, то об одной их плюшке – многопоточности.
А что это? Как это реализовано и для чего можно использовать?
Во многих литературных источниках о многопоточности в Delphi встречается всего 1 – 2 главы не более, все потому что эта тема изначально не особо освещена в справочной информации. Но речь не об этом, многопоточность хорошо, когда, например, вы запускаете формирование большого отчета, а сами в этом же окне продолжаете работать с журналом, вот такой утрированный пример. Это был пример нормально работающего приложения. Что чаще встречается на практике – запускаем отчет, программа «зависает» мы ждем пока отчет выгрузит нам данные и только потом продолжаем работать в журнале, как-то так.
Реализовано это довольно просто, так сказать пара кликов.
1.У компонента TOraSession.TheadSafety=true
2.У компонента TOraQuery.NonBlocking=true
Ну вот собственно и все.
После этих действий ваш датасет будет обрабатывать запросы выборки данных (select) в отдельном потоке, что позволит, к примеру параллельно основной работе выгружать отчетные формы.
Как вы могли догадаться данный функционал можно использовать не только для отчетов. У меня, например, несколько ПО которые работают только в потоках, то есть вся логика распределена по потокам и этого мне удалось достать в основном исходя из метода, описанного в данной статье.