8

データベースへの接続を維持する Delphi プログラムがいくつかあります (一部の Oracle、一部の Firebird)。Windows がスリープ モードに入るときにプログラムが実行されていると、データベースへの接続が失われます。この状況を処理する最善の方法は何ですか? ネットワークがスリープ モードに入る前にイベントを受信して​​、状況をより適切に処理できるようにする方法はありますか?

4

1 に答える 1

6

RRUZ について詳しく説明するには、次のようなものが必要です。

procedure WMPowerBroadcast(var AMessage: TMessage); message WM_POWERBROADCAST;

あなたの形で。次にWMPowerBroadcast、次のようになります。

procedure TMyForm.WMPowerBroadcast(var AMessage: TMessage);
const
  PBT_APMSUSPEND = 4;
  PBT_APMRESUMESUSPEND = 7;
begin
  case AMessage.WParam of
    PBT_APMSUSPEND:
    begin
      // save your DB stuff. NOTE: IIRC you are pretty limited in the time 
      // you get to do this - 2 seconds ? may be the limit
    end;
    PBT_APMRESUMESUSPEND:
    begin
      // restore your DB connection
    end;
  else
     // you're going to want to handle PBT_APMRESUMECRITICAL (XP and older systems) and PBT_APMRESUMEAUTOMATIC differently
     // IIRC you did not get notification of the suspend in this case
  end;
end;
于 2012-06-11T20:24:22.207 に答える