TIBCAlerter clears posted events when calling Events.Add

Discussion of open issues, suggestions and bugs regarding IBDAC (InterBase Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
mwore
Posts: 3
Joined: Thu 11 Jun 2020 09:00

TIBCAlerter clears posted events when calling Events.Add

Post by mwore » Thu 11 Jun 2020 09:54

Hello,

I've noticed that posted events get cleared whenever I add a new event to TIBCAlerter. Although this can be solved by calling Application.ProcessMessages before Events.Add, I would prefer a better solution. I'm using version 7.2.4.

During application initialization a few events get registered at different times in a single long-running method. If Firebird posts any events before the last event is registered, TIBCAlerter never fires.

Any help would be appreciated.

Thanks!

oleg0k
Devart Team
Posts: 190
Joined: Wed 11 Mar 2020 08:28

Re: TIBCAlerter clears posted events when calling Events.Add

Post by oleg0k » Mon 15 Jun 2020 07:03

Hello,
In order to get a detailed answer, please compose a small sample demonstrating the specified behavior and send it to us including scripts for creating and filling database objects.

wbr, Oleg
Devart Team

mwore
Posts: 3
Joined: Thu 11 Jun 2020 09:00

Re: TIBCAlerter clears posted events when calling Events.Add

Post by mwore » Wed 17 Jun 2020 17:33

Memo1 contains only "event2" unless ProcessMessages gets uncommented.

Code: Select all

procedure TForm1.FormShow(Sender: TObject);
begin
  IBCAlerter1.Events.Add('event1');
  IBCAlerter1.Start;
  IBCAlerter1.SendEvent('event1');
  //Application.ProcessMessages;
  IBCAlerter1.Events.Add('event2');
  IBCAlerter1.Start;
  IBCAlerter1.SendEvent('event2');
end;

procedure TForm1.IBCAlerter1Event(Sender: TObject; EventName: string;
  EventCount: Integer);
begin
  Memo1.Lines.Add(EventName);
end;

oleg0k
Devart Team
Posts: 190
Joined: Wed 11 Mar 2020 08:28

Re: TIBCAlerter clears posted events when calling Events.Add

Post by oleg0k » Fri 19 Jun 2020 08:42

Hello,
When a new event is triggered, Alerter stops. Therefore, it doesn't manage to handle the first event. Invoking Application.ProcessMessages doesn't help in this case. In a real world application, the server probably won't manage to send the message while Application.ProcessMessages is being invoked.
The basic solution here is to run Alerter after all events have been registered or wait for the first event and only then add the second event, if all events are known in advance.

wbr, Oleg
Devart Team

mwore
Posts: 3
Joined: Thu 11 Jun 2020 09:00

Re: TIBCAlerter clears posted events when calling Events.Add

Post by mwore » Fri 19 Jun 2020 08:59

Thanks for your help. I've solved the issue by creating a separate Alerter when registering a new batch of events.

Post Reply