C# - 如何锁定多个进程访问的方法

时间:2017-10-15 06:46:39

标签: c# multiprocessing

我对这个问题有点挣扎,并乐意寻求帮助 -

我有一个在不同远程计算机上运行的c#项目(.sln) - 所以他们创建了同一个类的不同实例。 所有这些都连接到同一个DB,并运行相同的sql事务。

我在调用DB方法的方法内部检查数据" CanBeHandledByMachine(dalTestRequest,dalMachine,machineCanExecuteUITests)"

检查另一台机器是否已从DB获得相同的数据。 但是,我仍然有碰撞,2台机器确实得到了相同的数据, 在这种情况下,锁定对象(互斥锁)/静态类当然无济于事......

等待你的帮助:) 谢谢,

1 个答案:

答案 0 :(得分:1)

您需要处理共享资源(即数据库)上的锁。你并没有真正陈述你正在做的事情,但一个典型的场景是“声称”#34;记录要做一些处理。

您通常会通过更新表格行(例如状态列 - >'处理',以便不再将其标记为需要处理)并选择相关列来执行此操作你的通话申请。

OUTPUT子句是一种很好的方法,因为你在UPDATE中获取行的独占锁:

https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql