【发布时间】:2009-05-08 17:17:49
【问题描述】:
好的,先介绍一下背景。我们需要一个进程间读/写锁。我们决定使用一个文件并使用 LockEx 和 UnlockEx 锁定第一个字节。该类在创建时会在系统临时文件夹中创建一个文件。该文件创建时具有读写访问权限并共享读|写|删除。我们还指定了 DeleteOnClose,这样我们就不会留下大量的临时文件。显然,AcquireReader 和 AcquireWriter 使用适当的标志调用 LockEx,而 ReleaseLock 调用 UnlockEx。
我们已经使用一个可以运行多个实例的小型应用程序测试了这个类,并且它运行良好。使用它的应用程序有问题,我们已设法在另一个小型测试应用程序中重新生成。在伪代码中是
第一次运行时,它运行良好。如果您尝试再次运行它,而第一次的子进程仍然持有锁,我们会在尝试打开文件时收到 UnauthorisedAccessException。
这似乎是一个权限问题,而不是共享冲突,但此测试用例中的所有进程都以同一用户身份运行。这里有人有什么想法吗?
我注意到另一个问题,它建议使用互斥锁和信号量来实现我们想要的。我可能会改变我们的实现,但我仍然想知道是什么导致了这个问题。
【问题讨论】:
标签: vb.net file locking file-security