C# 4.0 如何使用3.5.NET framework和CE windows 5.0仅运行一个exe实例

C# 4.0 如何使用3.5.NET framework和CE windows 5.0仅运行一个exe实例,c#-4.0,C# 4.0,我花了很长时间苦苦寻找我问题的答案,只找到了3.5.NET Framework版本(以及CE Windows 5.0)中不存在的类的答案。此外,它是Visual C#with Visual Studio 2008 当我尝试以下操作时(使用System.Threading) 编译器抱怨互斥量是一种类型,但用作变量。如果我使用[MTAThread],它也会抱怨找不到它,我被迫使用[MTAThread] 移动设备类型的c#程序的类与基于控制台的c#程序的类相同吗?我对这一点有些陌生,关于如何声明、使用

我花了很长时间苦苦寻找我问题的答案,只找到了3.5.NET Framework版本(以及CE Windows 5.0)中不存在的类的答案。此外,它是Visual C#with Visual Studio 2008

当我尝试以下操作时(使用System.Threading)

编译器抱怨互斥量是一种类型,但用作变量。如果我使用[MTAThread],它也会抱怨找不到它,我被迫使用[MTAThread]

移动设备类型的c#程序的类与基于控制台的c#程序的类相同吗?我对这一点有些陌生,关于如何声明、使用、锁定互斥锁以及您想知道的关于互斥锁的所有内容的想法让我头疼。O.O我怀疑这是因为这些类与控制台和移动版本不同

它看起来很简单,创建一个互斥,检查它是否存在,如果存在,那么就不要启动一个新的exe实例。这就是我想要的…只运行任何exe的一个实例。这是一个移动设备,因此它是一个独立的,我不必担心任何其他人使用.exe。只需要阻止用户点击开始按钮15次,然后停止使用g 15正在运行的应用程序实例(然后抱怨内存使用率低!)


我已经读到一个好方法是创建一个线程,锁定它,然后检查锁定是否成功,以测试一个exe实例是否已经运行,如果已经运行,请关闭它,否则请运行exe。有没有更简单的方法来执行此操作?

一种方法是打开一个文件进行写入。只有一个应用程序实例可以获得此锁定每次。启动时,尝试获取一个文件句柄以进行写入,如果失败,则必须有另一个实例已在运行:立即退出

我想你可以忘记互斥体,因为我们在这里讨论的是单独的进程

 bool ok;
 Mutex myMutex = new Mutex();
 ok = Mutex(true,"scanner", out ok);