1

この問題をどのように進めるかについて興味があります。現在、認証を管理するTDSAuthenticationManagerクラスを使用してDataSnapサーバーをセットアップしています。

認証が失敗した場合、ログ記録の目的でフォームTMemoまたは同様のものに直接書き込むのは安全ですか?これを観察するための最良の方法は何ですか?

糸脱毛が必要ですか?

読書に乾杯、エイドリアン

4

1 に答える 1

3

はい。Datasnapイベントはさまざまなスレッドのコンテキストで実行されるため、同期が必要です。ご存知のとおり、UIプログラミングはメインスレッドに限定されています。

したがって、UIに何かを表示したい場合は、その方法に注意する必要があります。

一方、ファイルにログを記録する場合は、同期は必要ありませんが、2つの異なるスレッドが同時にログに記録しようとする可能性があるため、注意が必要です。

私が評価するオプションは次のとおりです。

  • クリティカルセクションを使用してログファイルへのアクセスを保護し、ロックによるマルチスレッドアクセスを回避します。一度に1つのスレッドのみがファイルにアクセスでき、他のすべての関心のあるスレッドは待機する必要があります。
  • 新しいロギングクラスを作成します。このクラスから、ログメッセージをメモリ内の(マルチスレッド対応)キューに追加するだけでログ要求を受け取ることができ、キューにメッセージがある場合は独自のスレッドを実行してファイルに書き込みます。 。

サーバーは実稼働環境ではサービスとして実行される傾向があるため、後者を選択します。

于 2012-11-16T05:22:59.100 に答える