Копия викизеркало

Это зеркало вики с pascal.chat. Правка, история и вход — там.

TFBEventMonitor/ru

English · Русский

TFBEventMonitor из модуля FBEventMonitor используется для мониторинга именованных событий, отправленных с сервера базы данных Firebird. События обычно генерируются триггерами при определенных операциях с базой данных.

Использование событий означает, что вы можете избежать регулярного опроса базы данных на предмет изменений статуса и могут быть полезны в случаях высокой нагрузки.

Пример

Обновление memo получаемыми событиями. Мониторинг событий с E1 по E7.

pascal
procedure TForm1.StartMonitor;
begin
  EventsM:=TFBEventMonitor.create(Self);
  EventsM.Connection:=IBConnection1;
  EventsM.Events.CommaText:='"E1",E2,E3,E4,"E5","E6","E7"'; //кавычки игнорируются
  EventsM.OnEventAlert:=OnFBEvent;
  EventsM.RegisterEvents;   // активирует IBConnection1, если он до сих пор не подсоединен к БД
end;

procedure TForm1.StopMonitor;
begin
  EventsM.UnRegisterEvents;  
  EventsM.Free;
end;

procedure TForm1.OnFBEvent(Sender: TObject; EventName: string;
  EventCount: longint; var CancelAlerts: boolean);
begin
  Memo1.Lines.Add(EventName+' произошло '+IntToStr(EventCount)+' раз.');
end;

Монитор событий прекращает мониторинг, когда связанный TIBConnection отключается от БД, и не перезапускается автоматически. Используйте обработчики событий TIBConnection.AfterConnect и TIBConnection.BeforeDisconnect для автоматического запуска и остановки мониторинга.

Сервер базы данных отправляет события всем соединениям, зарегистрированным для этих событий, кроме тех, которые созданы самим соединением. События отправляются после завершения транзакции. Откат транзакции отменит все события, созданные в этой транзакции. fbeventstest.pp в корневом каталоге fcl packages/fcl-db/examples/ представляет собой тестовую/демонстрационную программу, которая создает хранимую процедуру для отправки события с произвольным именем и использует второе соединение для мониторинга отправленных событий.

Warning: TFBEventMonitor создает поток для мониторинга входящих событий. На Unix включают cthreads или любой другой менеджер потоков.

См. также


From the Free Pascal wiki, page "TFBEventMonitor/ru", as it stood on 2019-10-12 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 1, последнее изменение: WikiArchive, .