通常我們會遇到這樣的情況,讓程式只執行乙個例項,比如啟動防毒軟體時,只能啟動乙個,再啟動的話就沒什麼效果!利用程式名來判斷不是乙個好辦法,如果我們把程式名稱改一下就可以執行兩個完全一樣的程序。我們最好利用程式集的attribute存放特定資訊,然後用assembly物件的getcustomattributes()方法獲取該資訊進行判斷。
在這裡,我有兩個解決方法:
方法一.我把assemblyinfo.cs裡的[assembly: assemblyfileversion("1.0.0.0")]改為[assembly:assemblyfileversion("2.0.0.8")],然後利用該資訊進行判斷。
**如下:
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.diagnostics;
using
system.reflection;
using
system.collections;
using
system.threading;
namespace
mywork_01
if(same
>1)
}}}}
}catch
}console.read();}}
} 方法二:直接定義乙個屬性類,利用此屬性資訊進行判斷。
**如下:
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.reflection;
using
system.diagnostics;
using
system.collections;
using
system.threading;
[assembly: help(
"this assembly demonstrates custom attributes creation and their run-time query.")]
public
class
helpattribute : attribute
protected
string description;
public
string description}}
class
program
:\n", currentprocess.mainmodule.filename, helpattr1.description);
break;}
}process processes
=process.getprocesses();
//獲得當前所有程序
intsame =0
; //
相同執行例項個數
arraylist prolist
=new
arraylist();
//將相同例項加入此集合中
foreach
(process pro
inprocesses)}}
}}}}
}catch
}console.readline();}}
參考:c#中的屬性
C 讓應用程式只執行乙個例項
用如下方法可以保證應用程式只執行乙個例項。新增引用 using system.reflection using system.runtime.interopservices using system.diagnostics 呼叫dll檔案 dllimport user32.dll private s...
讓程式只執行乙個例項(Delphi篇)
windows 下乙個典型的特徵就是多工,我們可以同時開啟多個視窗進行操作,也可以同時執行程式的多個例項,比如可以開啟許多個資源管理器進行檔案的移動複製操作。但有時出於某種考慮 比如安全性 我們要做出一些限制,讓程式只能夠執行乙個例項。在delphi程式設計中,筆者總結出了以下幾種方法 一 查詢視窗...
程式只執行乙個例項,並啟用前乙個例項
實現程式只執行一次的方法很多,但是原理都是一樣的,就是執行第一次的時候設定乙個標記,每次執行的時候檢查該標記,如果有就說明已經執行了。具體實現 1 在程式初始化的時候 initinstance 列舉所有的視窗,查詢本程式的例項是否存在 2 在主視窗初始化的時候在本視窗的屬性列表中新增乙個標記,以便程...