C# 防止方法同时从不同线程执行
防止一个方法同时执行两次的唯一方法是使用C# 防止方法同时从不同线程执行,c#,C#,防止一个方法同时执行两次的唯一方法是使用lock语句,对吗 private object lockMethod = new object(); public void Method() { lock (lockMethod) { // work } } public void FromThread1() { Method(); } public void FromThread2() { Method(); } 当然,我也可以使用几乎相同的M
lock
语句,对吗
private object lockMethod = new object();
public void Method() {
lock (lockMethod) {
// work
}
}
public void FromThread1() {
Method();
}
public void FromThread2() {
Method();
}
当然,我也可以使用几乎相同的MethodImpl(methodimpoptions.Synchronized)
还有其他技术吗
防止方法同时执行两次的唯一方法是使用lock语句,对吗
private object lockMethod = new object();
public void Method() {
lock (lockMethod) {
// work
}
}
public void FromThread1() {
Method();
}
public void FromThread2() {
Method();
}
不,但这是“标准”方式,可能是最好的。也就是说,通常使用锁来同步对特定数据的访问,而不是对整个方法的访问。锁定整个方法可能会导致更多的阻塞
至于其他方法,名称空间包含许多其他类型的同步方法,包括
ReaderWriterLockSlim
,信号量
,互斥体
,监控类
(这是锁
内部使用的)等。所有这些方法都提供了各种同步数据的方法,尽管每一个都是为不同的场景而设计的。在这种情况下,lock
是合适的方法。我有点担心您试图锁定一个方法而不是锁定数据——您想解决什么问题?既然您没有显示任何静态
方法,那么您真的试图防止在同一时间对同一实例执行两次方法吗?或者同时为单个实例使用任意两个方法?该方法非常小,在我的情况下,锁定该方法=锁定数据