異世界


2012年10月13日 星期六

C# 限制程式只執行一次

在 Program.cs 中 加入 RunningInstance()

static class Program
    {
        /// <summary>
        /// 應用程式的主要進入點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            if (!RunningInstance())
            {
                Application.Run(new Form1());
            }
        }
 
        public static bool RunningInstance()
        {
            //取得目前的程序
            System.Diagnostics.Process current = System.Diagnostics.Process.GetCurrentProcess();
            //取得其他同名稱的程序
            System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(current.ProcessName);
 
            foreach (System.Diagnostics.Process process in processes)
            {
                //判斷是不是目前的執行緒
                if (process.Id != current.Id)
                {
                    //確定一下是不是從同一個執行
                    if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
                    {
                        //找到~ 回傳 true
                        return true;
                    }
                }
            }
 
            //如果都沒有,則回傳 false
            return false;
        }
    }

 


資訊來源: http://www.programmer-club.com/showSameTitleN/csharp/2345.html

沒有留言:

張貼留言