首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#只起步一个进程

2013-01-23 
C#只启动一个进程保证软件只运行一次还是很有必要的,方法也很简单,只要判断进程中有无当前的进程名就可以

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)                    {                        //这里表示是重复的进程                        }

 

热点排行