互斥体是否可以在.Net中的多个实例中工作

时间:2014-08-09 23:15:43

标签: .net locking mutex multiple-instances

我是这个论坛的新手,请接受我的第一篇文章。我正在研究从VB6迁移的.Net应用程序,该应用程序使用同一类的多个实例进行多处理。但.Net中的一个文件操作比vb6花费更长的时间,这导致.Net中的问题,因为监听器用于监视它。我想知道是否可以使用互斥锁来锁定此方法(已经有文件操作),以便其他实例不会执行此代码。代码类似于下面。

Main()
{
FileWriter objA = new FileWriter()
FileWriter objB = new FileWriter() 
...
objA.CreatePDFFile()
objB.CreatePDFFile()
...
}

Class FileWriter
{

bool CreatePDFFile()
{
using ( Mutex mutx = new Mutex( false, @"Global\" + appGuid)
{  
   mutx.WaitOne();
   ....//File operations code over here
   mutx.ReleaseMutex()

}
}
}

如果上述方法有效,请告诉我。

1 个答案:

答案 0 :(得分:0)

互斥锁通过在任何给定时间仅由单个线程保持来同步访问。您的代码将阻止多个FileWriter.CreatePDFFile()实例同时执行。

因为它使用名为的互斥锁,它还会同步系统上各个进程的访问权限,例如:使用FileWriter类的所有应用程序的所有实例。

您对模拟的描述令人困惑。如果您只运行一个使用该类的进程,并且该进程只有一个线程,则互斥锁将无效。

相关问题