C# Mutex实现程序单实例运行

来源:互联网 发布:淘宝账号申诉二维码 编辑:程序博客网 时间:2024/04/29 11:54

简单实现

bool creatNew;Mutex mutex = new Mutex(true, "MutexTest_Instance", out creatNew);if (creatNew){//todo}elsereturn;



复杂需求

 class Program    {        private static readonly string Read = "read";        private static readonly string Write = "write";        private static readonly int WaitTime = 1000 * 6 * 20;        /// <summary>        /// 程序部署两个版本计划任务方式执行(Read/Write)        /// 同时只能有一个实例在运行        /// Write运行时,Read直接退出        /// Read运行时,Write等待Read结束再执行,直到超时        /// </summary>        /// <param name="args"></param>        static void Main(string[] args)        {            if (args.Length < 1)                throw new ArgumentException("缺失命令行参数");            if (string.Compare(args[0], Read, true) == 0)            {                bool creatNew;                Mutex mutex = new Mutex(true, "MutexTest_Instance", out creatNew);                if (creatNew)//如果Mutex不存在则执行程序逻辑,否则退出                {                    bool waitOne = mutex.WaitOne();                    if (waitOne)                    {                        // Read逻辑                        mutex.ReleaseMutex();                    }                }                else                {                }                return;            }            if (string.Compare(args[0], Write, true) == 0)            {                bool creatNew;                Mutex mutex = new Mutex(true, "MutexTest_Instance", out creatNew);                bool waitOne = mutex.WaitOne(WaitTime);                if (waitOne)                {                    //Write逻辑                    mutex.ReleaseMutex();                }                else                {                    //todo                }                return;            }            throw new ArgumentException("命令行参数有误");        }    }


原创粉丝点击