我有创建多个线程的代码,所有线程都尝试将信息记录在一个文件中
我尝试使用互斥锁登录文件,但是当我使用Mutex()Mutex(true or false, "name")对象时得到不同的响应。Mutex()提供了适当的预期结果,但是Mutex(true/false, "myname")缺少一些日志信息。

那么它们之间有什么区别呢?

System.Threading.Mutex mtx = new System.Threading.Mutex(false ,"Myname" );

try
{
    try
    {
        mtx.WaitOne();
    }
    catch (AbandonedMutexException)
    { }

  //log into file
}

catch (Exception)
{
    Console.WriteLine("EXCEPTION CAUGHT ***");
}
finally
{
    mtx.ReleaseMutex();
    mtx.Close();
}

最佳答案

parameterless constructor的文档中。



第二个参数仅给互斥锁一个名称。因此,例如,如果另一个进程创建了一个具有相同名称的互斥锁,则现有的互斥锁将在这两个进程之间共享。

09-28 10:13