Subject | TIB_BDataset set Session |
---|---|
Author | lseckde |
Post date | 2002-08-12T08:43:39Z |
Hi,
while using IBO in an multithreading environment, I found an problem
(an hopefully an solution).
As far as I know to use IBO with multiple threads each thread must
use an separate IB_Session, but the TIB_BDataset does not override
set SetSession function so it still uses the default session.
After modifying the sources:
TIB_BDataset = class(TIB_Dataset)
..
procedure SetSession( ASession: TIB_Session ); override;
and
procedure TIB_BDataset.SetSession( ASession: TIB_Session );
begin
if IB_Session <> ASession then
begin
inherited SetSession( ASession );
if assigned(FCurrentCursor) then FCurrentCursor.IB_Session :=
ASession;
if assigned(FBufferCursor) then FBufferCursor.IB_Session :=
ASession;
if assigned(FLocateCursor) then FLocateCursor.IB_Session :=
ASession;
if Assigned(FFilterCursor) then FFilterCursor.IB_Session :=
ASession;
end;
end;
it works fine.
Does any body know other possible problems.
Regards
Thomas Stamm
while using IBO in an multithreading environment, I found an problem
(an hopefully an solution).
As far as I know to use IBO with multiple threads each thread must
use an separate IB_Session, but the TIB_BDataset does not override
set SetSession function so it still uses the default session.
After modifying the sources:
TIB_BDataset = class(TIB_Dataset)
..
procedure SetSession( ASession: TIB_Session ); override;
and
procedure TIB_BDataset.SetSession( ASession: TIB_Session );
begin
if IB_Session <> ASession then
begin
inherited SetSession( ASession );
if assigned(FCurrentCursor) then FCurrentCursor.IB_Session :=
ASession;
if assigned(FBufferCursor) then FBufferCursor.IB_Session :=
ASession;
if assigned(FLocateCursor) then FLocateCursor.IB_Session :=
ASession;
if Assigned(FFilterCursor) then FFilterCursor.IB_Session :=
ASession;
end;
end;
it works fine.
Does any body know other possible problems.
Regards
Thomas Stamm