Tag: 互斥

使用string作为锁来进行线程同步

当我看到一些遗留的应用程序代码时,我注意到它正在使用字符串对象来进行线程同步。 我正在尝试解决此程序中的一些线程争用问题,并想知道这是否会导致如此奇怪的情况。 有什么想法吗 ? private static string mutex= “ABC”; internal static void Foo(Rpc rpc) { lock (mutex) { //do something } }

使用Mutex运行应用程序的单个实例

为了只允许运行一个应用程序的单个实例,我正在使用互斥锁。 代码如下。 这是正确的方法吗? 代码中是否有任何缺陷? 当用户第二次尝试打开应用程序时,如何显示已在运行的应用程序。 目前(在下面的代码中),我只是显示另一个实例已在运行的消息。 static void Main(string[] args) { Mutex _mut = null; try { _mut = Mutex.OpenExisting(AppDomain.CurrentDomain.FriendlyName); } catch { //handler to be written } if (_mut == null) { _mut = new Mutex(false, AppDomain.CurrentDomain.FriendlyName); } else { _mut.Close(); MessageBox.Show(“Instance already running”); } }