使用mutex,进行互斥访问
示例中运行第一个窗口显示running
此时运行第二个窗口显示 空白 处于等待。若在5秒内在第一个窗口中输入,将释放资源,此时第二个窗口将显示running
using System;
using System.Threading;
namespace MutexDemo
{
class Program
{
static void Main(string[] args)
{
const string MutexName = "Demo";
Console.WriteLine("mutex name {0}", MutexName);
using (var m = new Mutex(false, MutexName))
//开启第二个窗口时,以下方式将不会回馈m状态,以上方式可以
//using (var m = new Mutex(false, MutexName))
{
if (!m.WaitOne(TimeSpan.FromSeconds(5), false))
Console.WriteLine("second instance is running");
else
{
Console.WriteLine("running");
//按键后释放资源
Console.ReadLine();
m.ReleaseMutex();
}
}
Console.WriteLine("main thread waiting for a key");
Console.ReadKey();
}
}
}
若将
using (var m = new Mutex(false, MutexName))改为
using (var m = new Mutex(false, MutexName))则第一个窗口释放资源后,第二个窗口也不会取得资源;即mutex的初始权仅归第一个窗口所有

本文介绍如何通过Mutex实现资源的互斥访问。示例展示了两个窗口应用:第一个窗口运行并显示“running”,第二个窗口尝试获取Mutex并在第一个窗口释放资源后显示相同消息。通过按键操作演示Mutex的工作原理。
1417

被折叠的 条评论
为什么被折叠?



