【发布时间】:2011-05-24 14:47:23
【问题描述】:
好的,我已经使用了很多锁,但我以前从未遇到过这种情况。我有两个不同的类,其中包含用于修改同一个 MSAccess 数据库的代码:
public class DatabaseNinja
{
public void UseSQLKatana
{
//Code to execute queries against db.TableAwesome
}
}
public class DatabasePirate
{
public void UseSQLCutlass
{
//Code to execute queries against db.TableAwesome
}
}
这是一个问题,因为到数据库的事务不能并行执行,并且这些方法(UseSQLKatana 和 UseSQLCutlass)由不同的线程调用。
在我的研究中,我发现将公共对象用作锁定对象是一种不好的做法,那么如何锁定这些方法以使它们不会串联运行?答案仅仅是将这些方法放在同一个类中吗? (这在我的真实代码中其实没那么简单)
【问题讨论】:
-
我猜 db.TableAwesom 是一个公共表。您能否创建一个访问该表的公共方法,并在其中使用您的私有锁?
标签: c# multithreading locking