我有一个应用程序,它只能有1个实例中的每个时间在运行,但是,如果一个第二实例被推出它需要被记录到所述第一也可以使用共同的日志文件。

我有多少实例运行,我是打算简单地将其最初记录到事件记录器,但应用程序可以在用户或系统上下文中运行,并抛出异常试图查询事件日志源作为结账时作为安全日志是无法访问用户用户,这样的想法是报废。

所以我想找出具有相同的应用程序写入到一个日志文件的2种独立的情况下,最安全的方法是什么,以确保都得到写信给它一个机会。

我宁愿不使用现有的额外的框架如果可以避免

任何帮助理解。

有帮助吗?

解决方案

一个互斥可用于共享的资源的进程间同步诸如日志文件中。这里有一个样品

其他提示

您总是可以写入到系统事件日志。无锁定或任何需要和事件查看器是更强大的比一些给它的荣誉。

在回答您的评论,其他用户问及这里SO事件日志写入权限的问题。链接到该描述如何执行。MSDN文章答案

这里参见这个问题

如果您愿意,可以躲避这个问题...

如果这是一个Windows应用程序,你可以发送第一个实例的消息,然后就退出。在接收到该消息时,原始实例可以写入而没有任何问题的日志文件。

为什么不使用系统日志协议?这将允许你在一个非常基于标准的和灵活的方式提供日志。协议本身是相当简单的,但也有大量的例子在网络上,例如这里。如果您的应用往企业应用,有记录的标准方法可能是一大利好。 (而且,你也不需要维护文件不管是 - 它变成不只是一个专门的软件的工作)

破解这将是一种方法内存映射的日志文件。这样,应用程序的两个实例共享的文件相同的虚拟内存映像。然后有许多的实施文件内互斥的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top