保证程序只有一个实例运行并且先将旧实例关闭再运行新实例

using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Diagnostics; using System.Reflection; namespace MyClient {          static class Program     {         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main(string[] args)         {             Application.EnableVisualStyles();             Application.SetCompatibleTextRenderingDefault(false);             //bool blnCreate;//Another method to make sure only one instance             //Mutex m = new Mutex(true, "MyClient", out blnCreate);             //if (blnCreate)             CloseRunningInstance();             Application.Run(new MainFrm());         }         //Close the existed instance of my application         static void CloseRunningInstance()         {             Process current = Process.GetCurrentProcess();             Process[] processes = Process.GetProcessesByName(current.ProcessName);             //Loop through the running processes in with the same name                 foreach (Process process in processes)             {                 //Ignore the current process                     if (process.Id != current.Id)                 {                     //Make sure that the process is running from the exe file.                         if (Assembly.GetExecutingAssembly().Location.Replace("/""\\"== current.MainModule.FileName)                     {                         //Close the other process instance.                            process.Kill();                         process.WaitForExit();                     }                 }             }         }      } }

[温馨提示]:该文章由原博客园导入而来,如排版效果不佳,请移步:http://www.cnblogs.com/coderzh/archive/2007/12/10/989375.html

微信扫一扫交流

作者:CoderZh
微信关注:hacker-thinking (一个程序员的思考)
本文出处:https://blog.coderzh.com/2007/12/10/989375/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。