最近需要把專案的程式改為單例執行模式,防止使用者操作失誤開啟多個程序.
1.通過程序名數量方式控制,但修改可執行檔案的名稱後仍然可以開啟多個程序.網路上其他api實現的方法也有此詬病.
process processlist=process.getprocessesbyname(process.getcurrentprocess().processname);
if(processlist.length
<
2false
);
2.通過程序互斥實現,利用程式集guid作為程序標識.即使使用者修改了可執行檔案的檔名,也不會影響單例執行.
bool
run
=false
;string
name
=((guidattribute)assembly.getentryassembly().getcustomattributes(
typeof
(guidattribute),
false)[0
]).value;
mutex mutex
=new
mutex(
true
, name,
outrun);
iffalse
);
mutex.releasemutex();//新增此行,防止生成release版本時mutex無效.
}
應用程式單例
應用程式單例可以通過下面的幾種方法來實現 1.使用mutex類 2.使用semphore類 3.使用eventwaithandle類 其中使用semphore能控制應用程式能夠啟動的例項的個數,下面分別給出相應的實現 例子使用的都是winform應用程式.form1是乙個新建的空的窗體.1.使用mu...
C winform應用程式僅能開啟乙個程序執行
判斷程式是否已經執行,使程式只能執行乙個例項 方法1 這種檢測程序的名的方法,並不絕對有效。因為開啟第乙個例項後,將執行檔案改名後,還是可以執行第二個例項.private static bool isalreadyrunning return b 方法2 執行緒互斥 static void main...
QT應用程式單例項執行
我們經常會做一些軟體 程式只希望有最多乙個執行例項。我從網上找到了個方法,雖然現在還不太明白原理,但是這種方法總算會用了。原文摘自 int main int argc,char argv if sharemem create 1 return 0 當然別忘了在開頭加上 include 這段 應該不用...