互斥锁是否可以跨.net中的多个实例工作?



我是这个论坛的新手,请原谅我的第一个帖子。我正在开发一个从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()
}
}
}

请让我知道上述方法是否有效。

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

因为它使用了一个名为的互斥锁,它还将同步系统上进程间的访问,例如,所有使用FileWriter类的应用程序的所有实例。

你对模拟的描述令人困惑。如果你只运行一个使用这个类的进程,并且这个进程只有一个线程,那么互斥锁将不起作用。

最新更新