我有一个用C#编写的表单应用程序。我把这个exe放到我公司的服务器上,从所有计算机到达。我需要找到一个解决方案,以了解此exe是否在另一台计算机中运行。
因此,当一台计算机尝试运行该应用程序时,我应检查另一台计算机是否已在运行相同的应用程序。
我在SO中找到了一些东西,但只有当同一台计算机运行exe两次时,它们才能正常工作。
答案 0 :(得分:2)
让用户在服务器上写入文件。应用程序启动时,打开该文件进行写入,并在静态字段中保留对Stream的引用。 关闭应用程序后,关闭Stream。如果应用程序崩溃或网络中断,则操作系统将自动释放该文件。
例如,在Program.cs中:
private static Stream lockFile;
public static void Main()
{
try
{
try
{
lockFile = File.OpenWrite(@"\\server\folder\lock.txt");
}
catch (IOException e)
{
int err = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
if (err == 32)
{
MessageBox.Show("App already running on another computer");
return;
}
throw; //You should handle it properly...
}
//... run the apps
}
finally
{
if (lockFile != null)
lockFile.Dispose();
}
}
基于