میتوانید از تابع GetTickCount در دلفی برای اندازهگیری زمان استفاده کنید. این تابع زمان اجرای برنامه را به میلیثانیه برمیگرداند. در زمان مناسب (برای مثال هر 10 دقیقه)، زمان فعلی را ذخیره کنید و در هر تراکنش، زمان اجرای آن را مقایسه کنید. اگر زمان گذشته از 10 دقیقه باشد و هیچ تراکنشی انجام نشده باشد، اتصال را قطع کنید.
var LastTransactionTime, CurrentTime: Cardinal;
begin
// در زمان مناسب (هر 10 دقیقه) زمان فعلی را ذخیره کنید:
LastTransactionTime := GetTickCount;
// در هر تراکنش:
// ...
// در زمان مناسب، زمان فعلی را دوباره گرفته و با زمان آخرین تراکنش مقایسه کنید:
CurrentTime := GetTickCount;
if (CurrentTime - LastTransactionTime > 600000) then // 600000 معادل 10 دقیقه در میلیثانیه است
begin
// هیچ تراکنشی انجام نشده است، اتصال را قطع کنید:
FDConnection1.Connected := False;
end;
end;
در Delphi و با استفاده از FDConnection، میتوانید از رویداد AfterConnect برای اطلاع از برقراری اتصال به دیتابیس استفاده کنید. این رویداد هنگامی اجرا میشود که اتصال به دیتابیس با موفقیت برقرار شود. در این رویداد میتوانید زمان برقراری اتصال را ثبت کرده و از آن برای محاسبه زمان گذشته از آخرین تراکنش استفاده کنید.
procedure TForm1.FDConnection1AfterConnect(Sender: TObject);begin
// زمان برقراری اتصال را ثبت کنید
LastTransactionTime := GetTickCount;
end;
سپس در قسمتی از برنامه که یک تراکنش انجام میدهید، میتوانید زمان جاری را ذخیره کرده و برای محاسبه زمان گذشته از آخرین تراکنش استفاده کنید، همانند مثال قبلی.