再談應用程式單例執行 只能開啟乙個程序

2022-01-23 15:58:44 字數 777 閱讀 7502

最近需要把專案的程式改為單例執行模式,防止使用者操作失誤開啟多個程序.

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 這段 應該不用...