C#軟體啟動設計

來源:互聯網
上載者:User
設計 本文目的:根據近期開發的C#軟體,對於軟體的啟動設計談談我的心得。

如下代碼是我設計的啟動軟體的類,應用程式入口也是在這個普通類裡面。

using System;
using System.Threading;
using System.Windows.Forms;

namespace MainClass
{
public class MainApp
{
private static Mutex myMutex;
private static bool requestInitialOwnership = true;
private static bool mutexWasCreated;

/*

以上的部分是聲明進程的互斥

*/

[STAThread]
static void Main()
{
try
{
myMutex = new Mutex(requestInitialOwnership,"Test",out mutexWasCreated);
if(!(requestInitialOwnership && mutexWasCreated))
myMutex.WaitOne();
else
new MainApp();

/*

這裡就是進程互斥的實現。我看過一些人寫的啟功互斥,他們採用的方式是先看當前進程表裡有沒有要啟動的進程;有,看看這個進程是否和要啟動並執行進程來之相同的目錄。

實際上看來,這樣不能徹底解決問題,例如,如果我把程式改名,軟後換個目錄這樣就可以在此運行了,而且時間複雜度偏大。

而以上的代碼:

myMutex = new Mutex(requestInitialOwnership,"Test",out mutexWasCreated);


這裡是申請一個命名互斥,並且返回是否已經有同名的申請了。

if(!(requestInitialOwnership && mutexWasCreated))
myMutex.WaitOne();


如果互斥已經申請過了,阻塞要啟動並執行程式。

*/
}
}
catch(Exception ed)
{
MessageBox.Show(ed.ToString(),"Wrong Convention",MessageBoxButtons.OK,MessageBoxIcon.Error);
System.Environment.Exit(0);
}
}

public MainApp()
{

/*

以下是啟動類

*/
try
{

//這個視窗就是初始化視窗,也可以說是軟體封皮
MainClass.InitializeForm.InitializeForm initializeForm = new MainClass.InitializeForm.InitializeForm();


//在初始化視窗裡面添加檢驗程式,一般是用來初始化資料庫
string result;
if((result = initializeForm.StartTest()) != "")
throw new Exception(result);
else
initializeForm.Close();

//結束初始化視窗,最後進入主視窗

Application.Run(new MainForm.MainForm());
}
catch(Exception ed)
{
MessageBox.Show(ed.ToString(),"#error#",MessageBoxButtons.OK,MessageBoxIcon.Error);
Environment.Exit(1);
}
}

/*

以上代碼就可以實現全部的軟體啟動功能,如果要填加登陸視窗,可以放在初始化視窗之後,也可以放在主視窗類來實現裡。

*/
}
}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.