欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)只運(yùn)行單個(gè)實(shí)例應(yīng)用程序的方法(使用VB.Net的IsSingleInstance)

 更新時(shí)間:2014年07月03日 11:37:13   投稿:junjie  
這篇文章主要介紹了C#實(shí)現(xiàn)只運(yùn)行單個(gè)實(shí)例應(yīng)用程序的方法,本文使用的是VB.Net的IsSingleInstance方法實(shí)現(xiàn),優(yōu)于Mutex 和 Process 這兩種只運(yùn)行單個(gè)應(yīng)用程序?qū)嵗姆椒?需要的朋友可以參考下

從 <<Windows Forms 2.0 Programming, 2nd Edition>>   -  Single-Instance Applications 這一章中, 學(xué)到了調(diào)用 VB.Net 中的 IsSingleInstance, 為 C# WinForm 添加只運(yùn)行應(yīng)用程序的單個(gè)實(shí)例 ( Single Instance Application). 是個(gè)好方法!

該方法顯然從易用性上便捷與 Mutex 和 Process 這兩種只運(yùn)行單個(gè)應(yīng)用程序?qū)嵗姆椒?

Single Instance 概念:

從.NET 2.0起,提供了WindowsFormsApplicationBase類來簡(jiǎn)化Windows應(yīng)用程序編程,如果您是開發(fā)人員會(huì)感到感到奇怪,WindowsFormsApplicationBase類不在System.Windows.Forms 命名空間中而是屬于Microsoft.VisualBasic.ApplicationServices 命名空間,也許這是作為VB.NET開發(fā)人員的優(yōu)先好處吧。該類對(duì)應(yīng)的程序集為Microsoft.VisualBasic.dll,不過該程序集包含在.NET框架中一起發(fā)布,如果要引用該程序集,在部署上不存在額外操作。

WindowsFormsApplicationBase類實(shí)現(xiàn)了類似于Application類的一些功能,不過該類還包含一些簡(jiǎn)化Windows Forms應(yīng)用程序開發(fā)的接口,下面來簡(jiǎn)單了解一下。WindowsFormsApplicationBase類實(shí)現(xiàn)了對(duì)單實(shí)例應(yīng)用程序的支持,通過設(shè)置IsSingleInstance 屬性為True以及重寫OnStartupNextInstance方法可以簡(jiǎn)潔的實(shí)現(xiàn)。

實(shí)現(xiàn)

在 Program.cs - Main 方法中
1. 項(xiàng)目中引用VB.Net 的DLL – Microsoft.VisualBasic.DLL,
Program.cs:

復(fù)制代碼 代碼如下:
using Microsoft.VisualBasic.ApplicationServices;

2. 在Program.cs中增加一個(gè)類

Program.cs:

復(fù)制代碼 代碼如下:

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()); 方法為:

復(fù)制代碼 代碼如下:

//添加運(yùn)行單進(jìn)程程序
SingleInstanceApplication application = new SingleInstanceApplication();
application.Run(args);

SingleInstanceApplication類繼承自WindowsFormsApplicationBase,在構(gòu)造函數(shù)中設(shè)置為單實(shí)例模式,同時(shí)設(shè)置在主窗體關(guān)閉后退出應(yīng)用程序。在繼承類中,OnCreateMainForm方法被重寫用來創(chuàng)建主窗體,如果要保證應(yīng)用程序單一實(shí)例運(yùn)行,還需要重寫OnStartupNextInstance方法,在該應(yīng)用程序的下一個(gè)應(yīng)用程序?qū)嵗龁?dòng)時(shí),OnStartupNextInstance方法會(huì)得到執(zhí)行,在上面的實(shí)現(xiàn)代碼中,調(diào)用基類方法同時(shí)激活主窗口。

相關(guān)文章

  • C#調(diào)用Matlab生成的dll方法的詳細(xì)說明

    C#調(diào)用Matlab生成的dll方法的詳細(xì)說明

    這篇文章詳細(xì)介紹了C#調(diào)用Matlab生成的dll方法,有需要的朋友可以參考一下
    2013-09-09
  • 跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn)

    跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了跳一跳自動(dòng)跳躍C#代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談c# 泛型類的應(yīng)用

    淺談c# 泛型類的應(yīng)用

    本篇文章是對(duì)c#中泛型類的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • unity實(shí)現(xiàn)手游虛擬搖桿

    unity實(shí)現(xiàn)手游虛擬搖桿

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)手游虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# params可變參數(shù)的使用注意詳析

    C# params可變參數(shù)的使用注意詳析

    這篇文章主要給大家介紹了關(guān)于C# params可變參數(shù)的使用注意的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • C#實(shí)現(xiàn)插入排序

    C#實(shí)現(xiàn)插入排序

    這篇文章介紹了C#實(shí)現(xiàn)插入排序的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 詳解C#中HashTable的用法

    詳解C#中HashTable的用法

    在.NET Framework中,Hashtable是System.Collections命名空間提供的一個(gè)容器,用于處理和表現(xiàn)類似keyvalue的鍵值對(duì),其中key通常可用來快速查找,同時(shí)key是區(qū)分大小寫;value用于存儲(chǔ)對(duì)應(yīng)于key的值
    2016-02-02
  • C#下實(shí)現(xiàn)創(chuàng)建和刪除目錄的實(shí)例代碼

    C#下實(shí)現(xiàn)創(chuàng)建和刪除目錄的實(shí)例代碼

    這篇文章主要介紹了C#下實(shí)現(xiàn)創(chuàng)建和刪除目錄的方法,功能非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果

    C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#零基礎(chǔ)開發(fā)中最重要的概念總結(jié)

    C#零基礎(chǔ)開發(fā)中最重要的概念總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C#零基礎(chǔ)開發(fā)中最重要的一些概念,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,需要的可以參考一下
    2023-02-02

最新評(píng)論