C# 防止同一个应用程序运行多个实例

这里以C# Winform为例子说明,

最近在实现网络应用的时候,每个程序只能打开一次,因为会使用同一个端口,

所以为了防止客户不知道的情况下点击多次或者其他,防止这样的情况出现,写了一个小功能实现阻止这件事情发生,

说明:

"Chatter"  //程序运行的时候,在资源管理器里看到的 “ 映像名称 ”
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Windows.Forms;
 4 using System.Threading;
 5
 6 namespace Chatter
 7 {
 8     static class Program
 9     {
10         /// <summary>
11         /// The main entry point for the application.
12         /// </summary>
13         [STAThread]
14         static void Main()
15         {
16             bool startNew;
17             Mutex m = new Mutex(false, "Chatter", out startNew);
18             if (startNew)
19             {
20                 Application.EnableVisualStyles();
21                 Application.SetCompatibleTextRenderingDefault(false);
22                 Application.Run(new Chat());
23             }
24             else
25             {
26                 MessageBox.Show("Chatter 已经运行中");
27             }
28         }
29     }
30 }
时间: 2024-10-03 06:55:39

C# 防止同一个应用程序运行多个实例的相关文章

同一个PC只能运行一个应用实例(考虑多个用户会话情况)

原文:同一个PC只能运行一个应用实例(考虑多个用户会话情况) 1 class Program 2 { 3 private static Mutex m; 4 5 [STAThread] 6 static void Main() 7 { 8 bool createNew = false; 9 10 /* 11 * 在运行终端服务的服务器上,已命名的系统 mutex 可以具有两级可见性. 12 * 如果名称以前缀“Global\”开头,则 mutex 在所有终端服务器会话中均为可见. 13 * 如果

只容许程序运行1个实例

program Manager; uses  Forms,Windows,Messages,  Unit1 in 'Unit1.pas' {WMGJ_SERVERFORM1},  Unit2 in 'Unit2.pas' {Form2},  Unit3 in 'Unit3.pas' {Form3},  Unit4 in 'Unit4.pas' {Form4}; {$R *.res} var  AppTitle:string;  m_hMutex:THandle; begin  Applicati

【计算机概论】数据表示方式与软件程序运行

数据表示方式 数字系统 本质即二进制与十进制的相互转换. 文字编码系统 常用的英文编码表为ASCII系统,这个编码系统中,每个符号(英文,数字或符号等)都会占用1B的记录. 中文当中的编码系统最常用的是big5(简体是GB2312)编码表.每个中文字符占用2B. 为了解决某些生僻字被识别成乱码的问题,由国际组织ISO/IEC指定了所谓的Unicode编码系统,即UTF8或统一码,从而打破了所有国家的不同编码. 软件程序运行 目前的计算机系统将软件分为两大类,一个是系统软件,一个是应用程序. 机器

栈帧 --- 程序运行中数据的更改问题

一.栈 栈作为一种特殊的数据结构而存在("后入先出"存储),是一种只能在一端进行插入和删除操作的特殊线性表. 大多数CPU上的程序实现使用栈来支持函数调用操作.栈用来传递函数参数.存储返回信息.临时保存寄存器原有值以用于回复以及存储局部数据. 栈有很多自己的特性,它具有记忆功能,对栈的插入与删除操作中,不需要改变栈底指针:而且栈是从高地址向低地址延伸的.每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息.因此栈作用就是用来保持栈帧的活动记录(即函数调用).

杂谈——Android从启动到程序运行发生的事情

转载请注明出处 博客地址:http://blog.csdn.net/JonsTank2013/article/details/51118563 作者:李中权 前言 好久没有写博客了,瞬间感觉好多学了的东西不进行一个自我的总结与消化总归变不成自己的.通过博客可能还可以找到一些当初在学习的时候没有想到的问题.想了半天,从大二上学期自学Android以来还没有对Android从启动到程序运行期间进行一个完整的归纳,刚好最近又学到了一些新东西,那就以这篇博客为媒介,总结一下从Android启动到程序运行

Android从启动到程序运行整个过程的整理

1Android是基于Linux的一个操作系统,它可以分为五层,下面是它的层次架构图,可以记一下,因为后面应该会总结到SystemServer这些Application Framework层的东西 Android的五层架构从上到下依次是:应用层,应用框架层,库层,运行时层,Linux内核层. 而在Linux中,它的启动可以归为一下几个流程: Boot Loader——>初始化内核——>...... 当初始化内核之后,就会启动一个相当重要的祖先进程,也就是init进程,在Linux中所有的进程都

Java之Property-统获取一个应用程序运行的次数

1 package FileDemo; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.util.Properties; 8 9 public class PropertyTest { 10 11 /** 12 * @param args 13 * @throws IOE

C# 获取程序运行时路径

?  前言 开发中,很多时候都需要获取程序运行时路径,比如:反射.文件操作等..NET Framework 已经封装了这些功能,可以很方便的使用. 1.   可使用类 1.   System.AppDomain,程序集:mscorlib.dll. 2.   System.Environment,程序集:mscorlib.dll. 3.   System.IO.Directory,程序集:mscorlib.dll. 4.   System.Reflection.Assembly,程序集:mscor

单片机内程序运行的时候ram空间是如何分配的?

转自:http://blog.sina.com.cn/s/blog_a575eb9401014tam.html 单片机内程序运行的时候ram空间是如何分配的?我现对一个程序进行减少片内ram的使用的优化,有一些效果,同时也产生了些疑问,在此向各位大虾请教:一.现象:1.    我在通过减少全局变量.函数内变量的使用,减少函数间参数传递等手段来优化,发现某些时候我减少一个变量的使用,keil编译的结果就显示data减少了一字节,有时候这样一直减少几个变量的使用,data值一直都不会变,接着再减少变