简单实现
bool creatNew;
Mutex mutex = new Mutex(true, "MutexTest_Instance", out creatNew);
if (creatNew)
{
//todo
}
else
return;
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("命令行参数有误");
}
}