我一直在努力寻找我的问题的答案,并且只找到了3.5 .NET框架版本(以及CE Windows 5.0)中不存在的类的答案。此外,它是Visual C#with Visual Studio 2008。
当我尝试以下(使用System.Threading)
时 bool ok;
Mutex myMutex = new Mutex();
ok = Mutex(true,"scanner", out ok);
编译器抱怨Mutex是一种类型,但用作变量。如果我使用[STAThread],它也会抱怨它无法找到它并且我被迫使用[MTAThread]。
移动设备类型的c#程序类对于基于控制台的类是否相同?我对此有些陌生,如何声明,使用,锁定以及你想知道的关于互斥体的一切的想法让我的头疼。 O.o我怀疑这是因为这些课程与控制台版本和移动版本不同。
看起来很简单,创建一个互斥锁,检查它是否存在,如果是这样,那么就不要启动一个新的exe实例。这就是我想要的......只需运行任何exe的一个实例。这是一个移动设备因此它是独立的,我永远不必担心其他人使用.exe。只需要阻止用户点击启动按钮15次并运行15个应用程序实例(然后抱怨内存使用率低!)
我读过一个好方法是创建一个线程,锁定它然后检查锁是否成功测试exe的实例是否已经在运行,如果是,则关闭它运行exe。有更简单的方法吗?
答案 0 :(得分:0)
解决这个问题的一种方法是打开一个文件进行写作。只有一个应用程序实例可以一次获得此锁定。在启动时,尝试获取用于写入的文件句柄,如果失败,则必须有另一个实例已经运行:立即退出。
我认为你可以忘记互斥锁,因为我们在这里讨论单独的过程。