onExcecuteイベント内で(TidNotifyを使用して)操作するデータベースを使用するTidTCPServerがあります。アプリケーションを閉じる可能性はなく、すべてが非常にうまく機能します。アプリケーションを閉じている間、すべての通知インスタンスが作業を終了したかどうかわからず、通常はランタイム エラー 216 が発生します (「通知」作業が終了する前にデータベースを閉じると思います)。確認する方法はありますか - 古い通知の投稿を待っているか、アプリケーションを閉じることができるかどうかを確認できません。他の質問は、サーバープロセスの終了中に TidTCPServer が新しい接続を受け入れないように保護する方法です。以下のようなコードを使用していますが、それでもエラーが発生します。
type
TShutdownThread = class(TThread)
protected
procedure Execute; override;
end;
procedure TShutdownThread.Execute;
begin
IdTCPServer.Active := false;
end;
//closing...
if IdTCPServer.Active then
begin
with TShutdownThread.Create(false) do
try
WaitFor; // internally processes sync requests...
finally
Free;
end;
end;