C# 防止程序多开的两种方法

互斥对象防止程序多开

private void Form1_Load(object sender, EventArgs e)
{
    bool Exist;//定义一个bool变量,用来表示是否已经运行
    //创建Mutex互斥对象
    System.Threading.Mutex newMutex = new System.Threading.Mutex(true, "仅一次", out Exist);
    if (Exist)//如果没有运行
    {
        newMutex.ReleaseMutex();//运行新窗体
    }
    else
    {
        MessageBox.Show("本程序一次只能运行一个实例!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示信息
        this.Close();//关闭当前窗体
    }
}

进程检查

private void Form1_Load(object sender, EventArgs e)
{
    //获取当前活动进程的模块名称
    string moduleName = Process.GetCurrentProcess().MainModule.ModuleName;
    //返回指定路径字符串的文件名
    string processName = System.IO.Path.GetFileNameWithoutExtension(moduleName);
    //根据文件名创建进程资源数组
    Process[] processes = Process.GetProcessesByName(processName);
    //如果该数组长度大于1,说明多次运行
    if (processes.Length > 1)
    {
        MessageBox.Show("本程序一次只能运行一个实例!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示信息
        this.Close();//关闭当前窗体
    }

  转至: https://www.test404.com/post-713.html?wafcloud=1

原文地址:https://www.cnblogs.com/lkf18/p/10743424.html

时间: 2024-08-30 05:16:18

C# 防止程序多开的两种方法的相关文章

查看Chrome浏览器扩展程序源码的两种方法

注意:仅在当前最新的版本 55.0.2883.87 m (64-bit)上测试有效 首先获取extensionId: chrome 打开扩展程序页面 chrome://extensions/ 比如我想查看Adblock的源码:就先复制他的Id:gighmmpiobklfepjocnamgkkbiglidom 方法1: 打开目录 C:\Users\{YOUR_NAME}\AppData\Local\Google\Chrome\User Data\Profile 2\Extensions {YOUR

程序打印自身代码的两种方法

程序打印自身代码的两种方法 方法一:利用fopen,打开可执行程序对应的source code file /***************************************** code writer : EOF code file : print_my_self.c code date : 2014.08.01 e-mail: [email protected] code purpose : Aha, print out myself! *********************

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste

在Java Web程序中使用监听器可以通过以下两种方法

之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响应,从本质上来说这些都是观察者模式的具体实现,在web程序中的监听器也不例外.在Java Web程序中使用监听器可以通过以下两种方法:通过注解@WebListener来标识一个自定义的监听器:[java] view plain copy@WebListener public class Custom

WPF程序将DLL嵌入到EXE的两种方法

WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了>可以参看地下地址(两篇是一样的): 开源中国 http://my.oschina.net/chinesedragon/blog/308336 CNBLOGS http://www.cnblogs.com/luoshupeng/p/3946635.html 引言 前几一写了一个小工具----<Vi

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage

C# 禁止windows程序重复运行的两种基本方法

一般的如果运行一个软件.让他处于运行状态,然后我们再去打开这个程序时就会提示我们“程序已启动或者不能重复启动此程序”,比如QQ对战平台 ,就限制一台机子启动两个QQ对战平台,那么他在C#中是如何实现的呢? 一般有两种方法,我是用的是第一种 方法1: 在项目的第一个窗体的启动事件中 如form1_load() 中添加如下语句=================================这是什么分割线==================================== #region 判断系

heic转换格式的两种方法 为什么heic电脑打不开

虽然苹果系统已经升级多次了,但是印象最深的是iOS11系统,因为控制面板作了很大的调整,包括图片的格式也发生了很大的变化,令很多用户都手无足措,对于不怎么了解这些格式的朋友来说,应该如何快速的在电脑上打开这些图片呢?在线转换:1.在百度搜索框搜索"heic转jpg",会出现很多在线转换网站,这里选择的是一个操作较为方便的网站,以这个为例,快速转换heic格式:2.进入网站之后,可以看到很多的功能,包括其他的转换,左侧找到图片转换"heic转jpg",点击即可: 3.

[转]Delphi调用cmd的两种方法

delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hide);sleep(2000);memo1.Lines.LoadFromFile('c:\1.txt'); 2shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);WinExec主要运行EXE文件.如:WinExec(’