日期:2014-06-10  浏览次数:20605 次

 

有很多方案,先来最傻瓜式的  :
static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1)
            { 
                MessageBox.Show("已经有一个运行了");
            }
            else
            {
             
                Application.Run(new  Form1());
            }

        }
    }

 

 

 

 

 

再来一种

static class Program
    {
        [STAThread()]
        public static void Main()
        {
            bool ret;
            System.Threading.Mutex m = new System.Threading.Mutex(true, Application.ProductName, out  ret);
            if (ret)
            {
                //System.Windows.Forms.Application.EnableVisualStyles();  //这两行实现  XP  可视风格
                //System.Windows.Forms.Application.DoEvents();
                System.Windows.Forms.Application.Run(new Form1());
                //  frmMain  为你程序的主窗体,如果是控制台程序不用这句
                m.ReleaseMutex();
            }
            else
            {
                MessageBox.Show(null, "有一个和本程序相同的应用程序已经在运行,请不要同时运行多个本程序。\n\n这个程序即将退出。 ", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //  提示信息,可以删除。
                Application.Exit();//退出程序
            }
        }
    }