手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
摘要:从-Single-InstanceApplications这一章中,学到了调用VB.Net中的IsSingleInstance,为C#Win...

从 <<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方法会得到执行,在上面的实现代码中,调用基类方法同时激活主窗口。

【C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)】相关文章:

用C#实现启动另一程序的方法实例

C#实现协同过滤算法的实例代码

C#几种截取字符串的方法小结

解决C#程序只允许运行一个实例的几种方法详解

c# winform窗口一直置顶显示在桌面最上方或最底层的方法

使用C# Winform应用程序获取网页源文件的解决方法

C#访问应用程序配置文件的方法

C#打包应用程序,与.NETFramework介绍

c#实现隐藏与显示任务栏的方法详解

C#中一些你可能没用过的调试窗口的方法

精品推荐
分类导航