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

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

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

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

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

Single Instance 概念:

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

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

實現(xiàn)

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

相關(guān)文章

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

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

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

    跳一跳自動跳躍C#代碼實現(xiàn)

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

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

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

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

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

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

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

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

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

    詳解C#中HashTable的用法

    在.NET Framework中,Hashtable是System.Collections命名空間提供的一個容器,用于處理和表現(xiàn)類似keyvalue的鍵值對,其中key通??捎脕砜焖俨檎?,同時key是區(qū)分大小寫;value用于存儲對應(yīng)于key的值
    2016-02-02
  • C#下實現(xiàn)創(chuàng)建和刪除目錄的實例代碼

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

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

    C#實現(xiàn)滑動開關(guān)效果

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

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

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

最新評論