c#检查另一个App的另一个实例是否在另一台PC上运行

时间:2016-12-06 16:15:51

标签: c# windows winforms

我正在c#中构建一个小型CMS,允许用户编辑和更新报告信息。即报告名称,作者,描述等,然后保存到JSON文件。

然后将此JSON文件用作本地WebApp作为前端。

请注意,这是一个内部应用程序,使用CMS的每个人都可以访问同一个网络驱动器。

当用户在PC#1上打开CMS时,我想向尝试在PC#2上打开CMS的用户发出提示,并模拟Excel的“只读”和“只读”。 #39;功能,因此禁用某些功能,直到另一个实例关闭。

问题:根据您的经验,最优雅的方式是什么?

我有一个想法:

当在PC#1上打开CMS时,它会创建一个名为isopen.txt的文件或类似文件,然后在关闭时删除该文件。当在PC#2上打开CMS时,它将检查该文件是否存在,然后决定“#”权限。说明CMS将运行。这个'检查'方法可以在每个' x'之后调用。秒,然后提示用户CMS现在能够进入可编辑状态。

我不确定这是否是最好的方式,并且会喜欢一些有经验的C#开发人员输入!

1 个答案:

答案 0 :(得分:0)

您可以创建FileStream,然后从中StreamReader初始化:

FileStream f = new FileStream(@"path\file.json", FileMode.Open, 
FileAccess.ReadWrite, FileShare.Read);

using (StreamReader r = new StreamReader(f))
{
   string json = r.ReadToEnd();
   //your subsequent json operations
}

FileShare.Read允许您在using范围内处理文件时对该文件进行只读访问。

此外,这种方式也很有用,因为您不必手动关闭流,当您退出using时它会被处理掉。