C#只启动一个进程

保证软件只运行一次还是很有必要的,方法也很简单,只要判断进程中有无当前的进程名就可以了。
对于WPF的软件,在App.XAML.cs中判断。重写OnStartup方法就可以了。

  public partial class App : Application      {          /// <summary>          /// 只打开一个进程          /// </summary>          /// <param name="e"></param>          protected override void OnStartup(StartupEventArgs e)          {              Process currentProcess = Process.GetCurrentProcess();                foreach (Process item in Process.GetProcessesByName(currentProcess.ProcessName))              {                  if (item.Id != currentProcess.Id &&                   (item.StartTime - currentProcess.StartTime).TotalMilliseconds <= 0)                  {                      item.Kill();                        item.WaitForExit();                        break;                  }              }                base.OnStartup(e);          }      }

对于Winform的则直接在主窗体的构造其中判断。

 public partial class Form1 : Form      {          public Form1()          {              InitializeComponent();                StartUp();          }            private void StartUp()          {              Process currentProcess = Process.GetCurrentProcess();                foreach (Process item in Process.GetProcessesByName(currentProcess.ProcessName))              {                  if (item.Id != currentProcess.Id &&                   (item.StartTime - currentProcess.StartTime).TotalMilliseconds <= 0)                  {                      item.Kill();                        item.WaitForExit();                        break;                  }              }          }      }

简单的代码就可以完成这个功能。

代码下载:http://download.csdn.net/detail/yysyangyangyangshan/5000880

追加部分:

如果想做的更严格一些,可以根据进程名的路径来判断:

                    Process[] sameProcess = Process.GetProcessesByName                          (Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.BaseDirectory + currentProcess.ProcessName));                      if (sameProcess != null && sameProcess.Length > 0)                      {                          //这里表示是重复的进程                          }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值