Windowsスリープからの復帰でDBの再接続を遅延したい

解決


studio-take  2014-08-26 01:24:53  No: 46632

いつもお世話になります。

社内のスケジュール共有ソフトを組んだんですが、スリープ設定をされて方のパソコンが復帰した際に直後にDBにアクセスして、DBのOpenエラーが出てしまいます。
ソフトはタスクトレイの中に常時起動しているタイプで、Timerで更新をかけています。

使っているのは、Firebird + DBExpressです。
WindowsMessageでスリープのメッセージとか拾えるのかなと検索したんですが、いい答えは拾えませんでした。

なにかいい方法はないでしょうか。


通りすがり  2014-08-26 05:00:00  No: 46633

WM_POWERBROADCAST message (Windows)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373247.aspx

でどうですか?


studio-take  2014-09-03 23:44:19  No: 46634

ありがとうございます。
遅レスすいません。

//スリープメッセージの取得
procedure TfrmMain.GetWindowsPower(var Msg: TMessage);
begin
  inherited;
  case Msg.WParam of
    PBT_APMQUERYSUSPEND:begin
                          timWakeup.Enabled := False;
                          timReRead.Enabled := False;
                          timNext.Enabled   := False;
                          timWakeupLag.Enabled := False;
                        end;
    PBT_APMRESUMEAUTOMATIC:begin
                          timWakeupLag.Enabled := True;
                        end;
  end;
end;

とりあえず、タイマーで1分タイムラグを作ったら、データーベースのオープンエラーを回避できました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加