我有三个控制台项目。
MAIN.EXE
Secondary1.exe
Secondary2.exe
现在,main.exe在需要时调用secondary1和secondary2 exes,并在数据库中为它们提供表的id
主exe不会停止,但secondary1.exe和secondary2.exe在各自更新后停止
Main.exe创建secondary1.exe和secondary2.exe的多个实例
Main.exe还会在同一个表中更新数据库,但不会更新单行,多行。
当多个exes试图更新sql server,一个表时,我们正面临一个sql server死锁问题。
我们被告知在c#中使用互斥锁来解决这个问题。
知道如何在资源是数据库时这样做
抱歉,无法提供任何代码,因为我无法通过三个完全独立的.exes
我们也在使用实体框架
您需要进程间同步对象,而互斥锁并不适合它。您可以使用命名的信号量。当它被创建时,它可以被系统中的任何进程使用(嗯,经过许可它可能很棘手,但幸运的是它会马上工作)。
只需在创建信号时将其命名为信号量:
Semaphore _semaphore = new Semaphore(1,1, "MyNamedSemapthoreName");
并一如既往地使用它:
void DoSomeWithDataBase() {
_semaphore.WaitOne();
DoWorkInDB();
_semaphore.Release(); }