ARRのアプリケーションを登録しました。IdTCPServer
私のアプリケーションには、を使用してシリアル ポートからデータを読み取り、VSPE
それを に追加するがあると仮定しますClientDataSet
。メイン スレッドがフリーズすると、ARR は ApplicationRecoveryCallback() を呼び出します。IdTCPServer
リカバリ コールバック関数に安全にアクセスできますか? ClientDataSet
再起動する前にディスクに保存できるように停止したい。このように関数を単純に記述できますか?
function RecoveryFunction(pvParameter: Pointer): DWORD; stdcall;
var
ContinueRecovery: Boolean;
begin
Result := 0; // happy compiler ;-)
repeat
ApplicationRecoveryInProgress(ContinueRecovery);
if not ContinueRecovery then
ApplicationRecoveryFinished(False);
until frmInstrument.CriticalSection.TryEnter;
frmInstrument.IdTCPServer.Active := False;
frmInstrument.CDS.SaveToFile(RecoveryFile);
ApplicationRecoveryFinished(True);
end;