我有一个测量仪器对象:
public class Instrument
{
public double Measure()
{
return 0;
}
}
我有一个需要进行一些测量的设备:
public class Device
{
public Instrument MeasuringInstrument { get; set; }
public void DoMeasuring()
{
var result = this.MeasuringInstrument.Measure();
}
}
测量仪器一次只能在一个设备上操作,但许多设备可能使用同一仪器。我对线程不太熟悉,据我所知,以下两种解决方案都有缺陷。
public class Instrument
{
public double Measure()
{
lock(this)
{
return 0;
}
}
}
public class Device
{
public Instrument MeasuringInstrument { get; set; }
public void DoMeasuring()
{
lock(this.MeasurementInstrument)
{
var result = this.MeasuringInstrument.Measure();
}
}
}
我了解到最好锁定私有对象,但是我不知道如何在允许对设备进行get/set的同时进行锁定。你有什么建议吗?
非常感谢,
Ken