C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码

如何判断C# WinForm程序是否已经在运行,且只允许运行一个实例是一个比较常见的问题,可以通过以下几个步骤来解决:

1.通过进程判断是否已经存在实例

可以通过进程名或进程ID来判断是否已经存在了实例。以下是代码示例:

using System.Diagnostics;

bool isRunning = false;
string currentProcessName = Process.GetCurrentProcess().ProcessName;
Process[] allProcesses = Process.GetProcesses();
foreach (Process process in allProcesses)
{
    if (process.ProcessName == currentProcessName)
    {
        if (process.Id != Process.GetCurrentProcess().Id)
        {
            isRunning = true;
            break;
        }
    }
}
if (isRunning)
{
    MessageBox.Show("程序已经在运行中!");
    Application.Exit();
}

上面的代码通过获取本地正在运行的所有进程,判断是否有当前进程名相同的进程,如果存在,则说明已经有一个实例在运行中。

2.通过Mutex实现同步访问控制

另外一种方式是使用Mutex类来实现同步访问控制。以下是代码示例:

using System.Threading;

bool isRunning;
Mutex mutex = new Mutex(true, "MyMutex", out isRunning);
if (!isRunning)
{
    MessageBox.Show("程序已经在运行中!");
    mutex.ReleaseMutex();
    Application.Exit();
}

上面的代码首先声明一个名为MyMutex的互斥量,如果不存在这个互斥量,则创建一个并将其所有权初始归属为调用线程。如果已经存在了这个互斥量,那么Mutex类构造函数的返回值为false,此时将isRunning设置为false,表示程序已经运行中,然后释放这个互斥量,退出应用程序。

以上两种方法可以在程序中任选其一来判断并控制程序的运行实例,建议使用第一种方法进行判断。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • .net中下载文件的实例代码

    下面是“.NET中下载文件的实例代码”的完整攻略: 1. 使用WebClient类下载文件 WebClient类提供了一个简单的方法来从远程服务器下载文件。以下是示例代码: using System.Net; public void DownloadFile(string remoteUrl, string localPath) { using (var c…

    C# 2023年5月31日
    00
  • C#实现将程序锁定到Win7任务栏的方法

    下面是“C#实现将程序锁定到Win7任务栏的方法”的完整攻略: 前言 Win7任务栏可以将运行的程序任务以缩略图的形式展示在任务栏上,方便用户随时切换不同的任务,提高工作效率。一般情况下,我们可以在任务栏上固定自己常用的程序,以便下次快速启动。但有些时候,我们需要将我们的程序直接锁定到任务栏上,方便用户一键启动我们的程序。本篇攻略将讲解如何使用C#实现这一功…

    C# 2023年6月7日
    00
  • .Net Core日志记录之第三方框架Serilog

    .NET Core日志记录之第三方框架Serilog 在本攻略中,我们将深入讲解如何使用第三方框架Serilog进行.NET Core日志记录,并提供两个示例说明。 什么是Serilog? Serilog是一个.NET Core日志记录框架,它提供了一种简单、灵活、可扩展的方式来记录应用程序的日志。Serilog支持多种输出格式和目标,包括控制台、文件、数据…

    C# 2023年5月17日
    00
  • 详解.NET Core 3.0 里新的JSON API

    在本攻略中,我们将详细讲解.NET Core 3.0中新的JSON API,并提供两个示例说明。 安装Microsoft.AspNetCore.Mvc.NewtonsoftJson:首先,我们需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet包。我们可以使用Visual Studio的Get包管理器来安装Mic…

    C# 2023年5月16日
    00
  • c# 剔除sql语句’尾巴’的五种方法

    接下来我将为大家详细介绍“C#剔除SQL语句‘尾巴’的五种方法”: 一、问题描述 有时候在编写C#程序时,我们需要动态生成SQL语句。但是在动态生成SQL语句中,由于字符串拼接不当可能会导致语句的末尾出现多余的“AND”、“OR”等关键字,这就需要我们对字符串进行处理,去掉这些多余的关键字,以保证SQL语句的正确性。 下面将介绍五种方法来解决这个问题。 二、…

    C# 2023年5月15日
    00
  • .NET Core简单读取json配置文件

    .NET Core简单读取json配置文件 在.NET Core应用程序中,我们可以使用json配置文件来存储应用程序的配置信息。本攻略将详细介绍如何在.NET Core中读取json配置文件。 创建json配置文件 首先,我们需要创建一个json配置文件。我们可以使用以下代码来创建一个名为appsettings.json的json配置文件: { &quot…

    C# 2023年5月17日
    00
  • 深入理解c#多态

    深入理解C#多态的完整攻略 什么是多态? 在面向对象编程(OOP)中,多态是指同一个方法在不同情况下表现出现不同的行为。简单来说,就是同样的操作在不同的对象上可以有不同的实现。多态的概念是OOP中的三大特性之一,其它两个是封装和继承。 C#中的多态 C#中的多态性是通过虚方法(Virtual Methods)、抽象类和接口实现的。关键字virtual和ove…

    C# 2023年5月31日
    00
  • C#实现电脑麦克风录音

    下面是“C#实现电脑麦克风录音”的完整攻略: 准备工作: C#编程环境,可以使用Visual Studio或者JetBrains Rider等开发工具。 NAudio库,它是一个开源的音频处理库,可以在NuGet中进行安装。 实现步骤: 步骤1:初始化录音设备 我们需要调用System.Windows.Forms的API来检查电脑中可用的录音设备,然后选择合…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部