試過各種方法,下面這個相對比較好
在program.cs中,新增如下,紅色字部分要改掉
usingsystem.diagnostics; //新增
namespace programunique
static class program
///
/// 應用程式的主入口點。
///
[stathread]
static void main()
process p = form1.getrunninginstance();
if (p != null) //已經有應用程式副本執行
// messagebox.show("程式已經執行!");
form1.handlerunninginstance();
else //啟動第乙個應用程式
在form1.cs中新增這個region即可
#region 程式唯一性
private const int ws_shownormal = 1;
[dllimport("user32.dll")]
private static extern bool showwindowasync(intptr hwnd,int cmdshow);
[dllimport("user32.dll")]
private static extern bool setforegroundwindow(intptrhwnd);
public static process getrunninginstance()
process currentprocess =process.getcurrentprocess();//獲取當前程序
//獲取當前執行程式完全限定名
stringcurrentfilename = currentprocess.mainmodule.filename;
//獲取程序名為processname的process陣列。
process processes =process.getprocessesbyname(currentprocess.processname);
//遍歷有相同程序名稱正在執行的程序
foreach(process process in processes)
if(process.mainmodule.filename == currentfilename)
if (process.id!= currentprocess.id)//根據程序id排除當前程序
return process;//返回已執行的程序例項
return null;
public static bool handlerunninginstance(process instance)
//確保視窗沒有被最小化或最大化
showwindowasync(instance.mainwindowhandle,ws_shownormal);
//設定真實例程為foreground window
returnsetforegroundwindow(instance.mainwindowhandle);
public static bool handlerunninginstance()
process p = getrunninginstance();
if (p != null)
handlerunninginstance(p);
return true;
return false;
#endregion
Oracle唯一性約束和唯一性索引的關係
唯一性約束通過唯一性索引來實現?我覺得這說法不對。對於唯一性約束,索引是必須存在的,唯一性約束本質上是通過索引來保證的,但不一定是唯一性索引。唯一性約束允許有null值,唯一性約束的列可允許有多個null值。唯一性約束通過btree索引實現,而btree索引是不會包含null值,但使用null值過濾...
資訊唯一性原則
本人偶然間想到,google了半天也沒有找到相似的東西。在此拋磚引玉,望各位不吝賜教。資訊唯一性原則是解耦合與促進一致性的資料結構設計方法。乙個資訊只出現一次,其他地方只是引用。比如客戶買書 這一業務,需要進行兩次相關操作,即書店將 這種書的數量減1,客戶賬戶中 這種書的數量加1。需要注意,這裡是 ...
實現UniqueAttribute唯一性約束
using system using system.componentmodel.dataannotations using system.data.entity namespace zwj.tems.base public override boolean isvalid object value...