如何从同一个应用程序的两个实例写入同一文件。对于write,我使用TraceSource类和System.Diagnostis命名空间中的TraceEvent方法。我尝试使用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写入日志文件。如何更改InfoTraceEvent进行线程写入(由两个应用程序实例写入)?
答案 0 :(得分:0)
我在这里做了一些ESP诊断,因为我不知道症状是什么。我猜你有process1.exe和process2.exe,每个都有相同的system.diagnostics部分,即写入同一个文件。
只要process1.exe开始写入跟踪文件,它就会在进程持续时间内保持锁定状态。当process2.exe尝试写入同一文件时,它将为新文件生成一个名称,如file13.txt
此行为可能因听众而异。例如,如果您编写一个自定义侦听器,阻止尝试写入锁定文件,那么您将看到该行为。
我建议写入2个不同的文件或使用自定义侦听器在每次写入后关闭文件句柄。当两个进程碰巧尝试同时打开文件时,这需要重新尝试。