我有创建多个线程的代码,所有线程都尝试将信息记录在一个文件中
我尝试使用互斥锁登录文件,但是当我使用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的文档中。
第二个参数仅给互斥锁一个名称。因此,例如,如果另一个进程创建了一个具有相同名称的互斥锁,则现有的互斥锁将在这两个进程之间共享。