Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 786|回复: 0
打印 上一主题 下一主题

c# 禁止 重复 运行 启动

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2017-10-26 07:00:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自:http://www.cnblogs.com/enjoyprog ... /10/24/2737255.html


一般有两种方法,我是用的是第一种

方法1:

在项目的第一个窗体的启动事件中 如form1_load() 中添加如下语句


#region 判断系统是否已启动

? ?? ?? ?? ?System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("这里是你的程序进程名");//获取指定的进程名? ?
? ?? ?? ?? ?if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
? ?? ?? ?? ?{
? ?? ?? ?? ?? ? MessageBox.Show("程序已启动!");
? ?? ?? ?? ?? ? Application.Exit();? ?? ?? ?? ???//关闭系统
? ?? ?? ?? ?}


#endregion


===================================================================================
好了 这样就可以达到防止用户第二次启动此程序的目的了
当然你也可以把它编辑成一个类 或生成一个dll文件 调用它。


方法2.

在项目的启动引导文件 Program.cs中加入判断语句

using System.Linq;
using System.Windows.Forms;

namespace XiaoZhiSoft
{
? ? static class Program
? ? {
? ?? ???///
? ?? ???/// 应用程序的主入口点。
? ?? ???///

? ?? ???[STAThread]
? ?? ???static void Main()
? ?? ???{
? ?? ?? ?? ?bool isRuned;
? ?? ?? ?? ?System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
? ?? ?? ?? ?if (isRuned)
? ?? ?? ?? ?{

? ?? ?? ?? ?? ? Application.EnableVisualStyles();
? ?? ?? ?? ?? ? Application.SetCompatibleTextRenderingDefault(false);
? ?? ?? ?? ?? ? Application.Run(new Form1());
? ?? ?? ?? ?? ? mutex.ReleaseMutex();
? ?? ?? ?? ?}
? ?? ?? ?? ?else
? ?? ?? ?? ?{
? ?? ?? ?? ?? ? MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
? ?? ?? ?? ?}
? ?? ???}
? ? }
}

我用的是第二种,效果不错:)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表