`
king_tt
  • 浏览: 2233100 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

.net中如何只允许运行一个程序实例

 
阅读更多

如何使一个Windows应用程序只运行一个实例,看如下代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;

namespace MyMonitor
{
    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            Process[] ps = Process.GetProcessesByName(Process
.GetCurrentProcess().ProcessName);
            if (ps.Length <= 1)
            {
                Application.EnableVisualStyles();
                Application
.SetCompatibleTextRenderingDefault(false);
                Application.Run(new EMonitor());
            }
            else
            {
                MessageBox.Show("不能打开多于一个程序实例!");
            }
        }
    }
}

原理上来说,没有什么难的,只是不知道而已。

后来,又查到了一个方法,看下面的代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;

namespace MyMonitor
{
    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            bool bCreatedNew;
            //"EMonitor" 是我的程序的主窗体的名称,但是这个名称是可以随便
            //叫的,只是给互斥体取个名字而已
            Mutex m = new Mutex(false, "EMonitor", out bCreatedNew);
            if (bCreatedNew)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new EMonitor());
            }
            else
            {
                MessageBox.Show("不能打开多于一个程序实例!");
            }
        }
    }
}

可以看到,第二段代码采用Mutex提供的互斥功能。


分享到:
评论

相关推荐

    VB.net只许一个实例运行.doc

    VB.net 中单实例运行机制是指在同一个系统中只允许一个实例的程序运行,防止多个相同的程序实例同时运行。这种机制有多种实现方式,下面将介绍两种常见的实现方法。 方法一:通过进程名判断 这种方法是通过判断...

    C#程序只允许运行一个实例的解决方案.

    C#程序只允许运行一个实例的解决方案

    VB.NET Winform窗口后台运行+防多开+开机后台自动启动示例-BgProcessTemplate.rar

    在VB.NET编程环境中,开发一款Winform应用程序时,有时我们需要实现窗口在后台静默运行、防止多实例同时打开以及能够开机自动启动的功能。这个“BgProcessTemplate.rar”压缩包提供了一个示例,帮助开发者理解并实现...

    不用.netframework运行.net程序 源码示例

    1. **源代码文件**(如.cs):这些是用C#或其他.NET语言编写的源代码,展示了如何在无.NET Framework环境下运行程序的实现。 2. **项目文件**(如.csproj):定义了项目的构建设置和依赖关系。 3. **配置文件**(如....

    vb.net限制指定程序一天只能运行一次

    在实现“一天只能运行一次”的功能时,我们将利用`Process`类检查当前是否存在已运行的程序实例。 以下是一个基本的步骤来实现这个功能: 1. **检测进程**:在程序启动时,首先检查当前是否有相同名称的进程正在...

    VB.net程序源码120实例(VS2013)

    VB.NET是一种基于.NET Framework的编程语言,用于构建各种应用程序,包括桌面、Web和移动应用。这个压缩包包含120个VB.NET编程实例,适用于在Visual Studio 2013环境中学习和实践。通过这些实例,你可以深入理解VB...

    .net定时自动运行程序

    在.NET框架中,开发一个定时自动运行的程序可以利用多种技术。主要的焦点是使用定时器组件和计划任务。下面将详细介绍如何实现这样的功能。 首先,`.NET定时自动运行程序`通常涉及到`System.Timers.Timer`类或者`...

    asp.net 使程序只能够运行一个

    在某些情况下,我们可能希望我们的ASP.NET程序只能在一个实例中运行,以避免资源冲突或者保证数据一致性。这种需求在多用户系统或者服务型应用中尤其常见。 在ASP.NET中实现程序单实例运行,主要是通过Windows服务...

    .net框架的一个博客实例

    .NET框架是微软开发的一种软件框架,它为开发者提供了一个用于构建、部署和运行应用程序的统一平台。这个博客实例是基于.NET框架实现的,旨在展示如何使用该框架来创建一个功能完善的博客系统。在这个实例中,我们将...

    .NET平台下Web程序设计实例代码

    "晋级项目.zip"可能包含了一个逐步进阶的Web应用程序项目,从基础功能到复杂特性的实现,帮助开发者了解如何在实际工作中应用.NET Web开发技术。项目可能涵盖了登录注册系统、用户权限管理、数据库交互、前端UI设计...

    .NET多线程实例

    在多线程环境中,事件处理通常在引发事件的线程上运行,因此,如果一个线程修改了UI控件的状态,而另一个线程尝试处理相关事件,可能会导致线程不安全。使用适当的同步机制可以解决这个问题。 "资源管理器"可能涉及...

    asp.net 应用实例

    在 ASP.NET Web Forms 中,每个页面都有一个从加载到呈现的生命周期,包括初始化、加载数据、验证、呈现和卸载等阶段。理解这个生命周期对调试和优化性能至关重要。 4. **控件与事件处理** ASP.NET 提供了丰富的...

    asp.net 实例 网站

    ASP.NET常常结合Entity Framework,这是一个ORM(对象关系映射)工具,可以简化数据库操作,让开发者用面向对象的方式来处理数据库。 6. **ASP.NET Core**:随着云原生和跨平台需求的增长,微软推出了ASP.NET Core...

    ASP.NET 的泛型实例

    在这个"ASP.NET的泛型实例"中,我们将深入探讨一个关键的概念——泛型。 泛型是.NET Framework 2.0引入的一项重要特性,它允许开发者在类、接口和方法中定义类型参数,从而实现数据类型的参数化。这带来了多方面的...

    一个可以运行的.NET工作流Demo

    3. **宿主应用**: 工作流需要在一个宿主应用程序中运行,宿主负责启动、暂停、恢复和终止工作流实例。"WFDemo"可能是一个简单的控制台应用,或者是一个更复杂的Web应用,演示了如何在实际项目中集成工作流。 4. **...

    一个ADO.NET数据库操作实例

    `ADO.NET与数据控件综合实例.pptx`可能是一个演示文稿,详细介绍了如何在Windows Forms或ASP.NET应用中使用ADO.NET数据控件,如`GridView`、`DataGrid`和`DataSet`等。这些控件允许开发者将数据库中的数据绑定到用户...

    ASP.NET 定时运行

    ASP.NET 定时运行是开发Web应用程序时常用的一种技术,它允许开发者在特定的时间间隔执行某些任务,例如数据清理、发送邮件或者执行自动化的工作流程。本文将深入探讨如何在ASP.NET环境中实现定时运行。 首先,我们...

    C# .NET进阶实例

    元数据是.NET中的一个重要概念,它提供了类、方法等程序元素的描述信息,可以用于代码生成、序列化和自描述等场景。 除此之外,.NET Framework还引入了LINQ(Language Integrated Query),这是一种在C#中进行数据...

    vb.net实例作品欣赏

    这个“综合练习”项目可能包含了上述一个或多个方面的实践,通过学习和分析,开发者不仅能巩固VB.NET的基础知识,还能理解如何将理论应用到实际问题中。同时,分享此类实例作品也是促进编程社区共同进步的有效方式。

    VB.NET托盘实例(启动程序时不显示主界面)

    标题和描述所提到的"VB.NET托盘实例(启动程序时不显示主界面)"就是一个典型的应用场景,它允许程序在启动时只在系统托盘中显示图标,而不弹出主要的用户界面。 首先,我们需要了解如何创建一个VB.NET项目并添加托盘...

Global site tag (gtag.js) - Google Analytics