原文:
c# 實現單例項程式
在我們經常使用的軟體中,當我們已經開啟後,再次開啟時,有的軟體不會出現兩個。例如有道詞典,會將上次的介面顯示出來,或者提示我們「該程式已經執行...」。我通過乙個簡單的c# wpf例子來說明。
首先我們要了解一下執行緒中的互斥體(mutex),引用msdn官方文件解釋,這是乙個同步基元,可以用於程序間同步。請參考下面的**:
public}
另一種情況是再執行該程式時,直接把剛才的程式顯示出來(可能此時程式已經最小化到工作列)。 實現思路:先找到當前的process,然後呼叫showwindow方法,把隱藏或者最小化的窗體進行顯示。請參考下面的**:
[dllimport("user32.dll")]
private
static
extern
bool showwindow(intptr hwnd, int
ncmdshow);
public
// }
}
此時當我們再次執行程式時,會將第一次執行的例項調出來進行顯示。比現實「該程式已經執行...」和諧多了。
update:
今天開始寫乙個新的專案時,也是需要做成單個例項。同樣的**,但是卻可以同時執行多個。開發環境win10 pro 64bit,但是整個人就凌亂了。後來查閱資料:
在專案根目錄下新建乙個program類,並且將啟動專案設定為program類,**如下:
classprogram
// //}
else
}}
單例程式的實現
一 利用訊號量實現程序間 如下 handle hsem createsemaphore null,1,1,m pszexename 建立命名的訊號量 訊號量存在,則程式已有乙個例項執行 if getlasterror error already exists 將主窗啟用 setforegroundw...
Qt單例項程式 防止程式多開
使用qlocalserver,qlocalsocket實現單例項程序,當已經存在相同程序時且視窗未啟用 遮擋,最小化,托盤 時,啟用程序主視窗。參考文章 class qlocalserver brunning false localserver null mainwindow null 說明 通過s...
select 例項程式
select.c created on 2011 11 7 author lc include include include include include int main if fds 1 open file2 o creat o rdwr,0666 0 if count write fds ...