讓程式只執行乙個例項(C )

2021-09-05 20:13:27 字數 1811 閱讀 6024

通常我們會遇到這樣的情況,讓程式只執行乙個例項,比如啟動防毒軟體時,只能啟動乙個,再啟動的話就沒什麼效果!利用程式名來判斷不是乙個好辦法,如果我們把程式名稱改一下就可以執行兩個完全一樣的程序。我們最好利用程式集的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 在主視窗初始化的時候在本視窗的屬性列表中新增乙個標記,以便程...