C#完成只運轉單個實例運用法式的辦法(應用VB.Net的IsSingleInstance)。本站提示廣大學習愛好者:(C#完成只運轉單個實例運用法式的辦法(應用VB.Net的IsSingleInstance))文章只能為提供參考,不一定能成為您想要的結果。以下是C#完成只運轉單個實例運用法式的辦法(應用VB.Net的IsSingleInstance)正文
從 <<Windows Forms 2.0 Programming, 2nd Edition>> - Single-Instance Applications 這一章中, 學到了挪用 VB.Net 中的 IsSingleInstance, 為 C# WinForm 添加只運轉運用法式的單個實例 ( Single Instance Application). 是個好辦法!
該辦法明顯從易用性上便捷與 Mutex 和 Process 這兩種只運轉單個運用法式實例的辦法.
Single Instance 概念:
從.NET 2.0起,供給了WindowsFormsApplicationBase類來簡化Windows運用法式編程,假如您是開辟人員會覺得覺得奇異,WindowsFormsApplicationBase類不在System.Windows.Forms 定名空間中而是屬於Microsoft.VisualBasic.ApplicationServices 定名空間,或許這是作為VB.NET開辟人員的優先利益吧。該類對應的法式集為Microsoft.VisualBasic.dll,不外該法式集包括在.NET框架中一路宣布,假如要援用該法式集,在安排上不存在額定操作。
WindowsFormsApplicationBase類完成了相似於Application類的一些功效,不外該類還包括一些簡化Windows Forms運用法式開辟的接口,上面來簡略懂得一下。WindowsFormsApplicationBase類完成了對單實例運用法式的支撐,經由過程設置IsSingleInstance 屬性為True和重寫OnStartupNextInstance辦法可以簡練的完成。
完成
在 Program.cs - Main 辦法中
1. 項目中援用VB.Net 的DLL – Microsoft.VisualBasic.DLL,
Program.cs:
using Microsoft.VisualBasic.ApplicationServices;
2. 在Program.cs中增長一個類
Program.cs:
public sealed class SingleInstanceApplication : WindowsFormsApplicationBase
{
public SingleInstanceApplication()
{
base.IsSingleInstance = true;
base.ShutdownStyle = ShutdownMode.AfterMainFormCloses;
}
protected override void OnCreateMainForm()
{
base.MainForm = new MainForm();
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs e)
{
base.OnStartupNextInstance(e);
base.MainForm.Activate();
}
}
3. 修正原 Application.Run(new MainForm()); 辦法為:
//添加運轉單過程法式
SingleInstanceApplication application = new SingleInstanceApplication();
application.Run(args);
SingleInstanceApplication類繼續自WindowsFormsApplicationBase,在結構函數中設置為單實例形式,同時設置在主窗體封閉撤退退卻出運用法式。在繼續類中,OnCreateMainForm辦法被重寫用來創立主窗體,假如要包管運用法式單一實例運轉,還須要重寫OnStartupNextInstance辦法,在該運用法式的下一個運用法式實例啟動時,OnStartupNextInstance辦法會獲得履行,在下面的完成代碼中,挪用基類辦法同時激活主窗口。