3

同じアプリケーションの 2 つのインスタンスから同じファイルに書き込む方法。書き込みには、System.Diagnostis 名前空間の TraceEvent メソッドを含む TraceSource クラスを使用しました。書き込み用に Mutex でメソッドを作成しようとしましたが、メソッドが正しく動作しません。ミューテックスを使用した TraceSource ログの例が見つかりません。誰でも私を助けることができますか?

私のログクラス:

public class LoggerTraceSource
 {
   private readonly TraceSource traceSource = new TraceSource();

  public void InfoTraceEvent(string message, int level)
        {
            traceSource.TraceEvent(TraceEventType.Information, level, message);
        }
 }

私のアプリケーションでは、ログ ファイルへの書き込みに InfoTraceEvent を使用しました。スレッド書き込み (2 つのアプリケーション インスタンスによる書き込み) の InfoTraceEvent をどのように変更しますか?

4

1 に答える 1

0

症状がわからないので、ここでいくつかのESP診断を行っています。process1.exe と process2.exe がそれぞれ同じ system.diagnostics セクション、つまり同じファイルへの書き込みを持っていると思います。

process1.exe は、トレース ファイルへの書き込みを開始するとすぐに、プロセスの間ロックを保持します。process2.exe が同じファイルに書き込もうとすると、file13.txt のような新しいファイルの名前が機械で生成されます。

この動作は、リスナーによって異なります。たとえば、ロックされたファイルへの書き込みの試行をブロックするカスタム リスナーを作成すると、その動作が見られます。

2 つの異なるファイルに書き込むか、書き込みごとにファイル ハンドルを閉じるカスタム リスナーを使用することをお勧めします。これには、2 つのプロセスがたまたまファイルを同時に開こうとしたときに、再試行が必要になります。

于 2014-07-29T14:19:33.350 に答える