winform 中怎樣實現一個程序只能在一臺計算機上運行

using System.Threading;     //需手動添加引用


static void Main()
{
bool initiallyOwned = true;
bool isCreated;
Mutex m = new Mutex( initiallyOwned, "MyTest", out isCreated); //Mutex爲System.Thread;中的類
if ( !(initiallyOwned && isCreated) )
{
MessageBox.Show( "抱歉,程序只能在一臺機上運行一個實例!", "提示" );
Application.Exit();
}
else
{
Application.Run( new MainForm() );
}
}

方法二:

  • 直到現在,爲了在Windows下滿足上述約束,開發者最常用的方法仍然是使用有名互斥體(named mutex)技術(參見5.7.2節)。然而採用這種技術來滿足上述約束存在以下缺點:該技術具有使互斥體的名字被其他應用程序所使用的較小的、潛在的風險。在這種情況下該技術將不再有效並且會造成很難檢測到的bug。

  • 該技術不能解決我們僅允許一個應用程序產生N個實例這種一般的問題。

  • 幸而在System.Diagnostics.Process類中擁有GetCurrentProcess()(返回當前進程)和GetPro- cesses()(返回機器上所有的進程)這樣的靜態方法。在下面的程序中我們爲上述問題找到了一個優雅且簡單的解決方案。



通過方法參數指定了遠程機器的名字後,GetProcesses()方法也可以返回遠程機器上所有的進程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章