最佳答案
在多线程中使用私有静态只读对象锁定是非常常见的。 我理解 private 通过加强封装来减少对锁定对象的入口点,从而访问最基本的。
但为什么是静电干扰?
private static readonly object Locker = new object();
最后,这个字段只在我的类中使用,我也可以用这个代替:
private readonly object Locker = new object();
有什么想说的吗?
更新:
作为一个例子,我粘贴了这段代码(只是一个例子)。我可以使用静态或非静态的储物柜,这两者都可以很好地工作。考虑到下面的答案,我应该这样定义我的储物柜吗?
private readonly object Locker = new object();
这是密码:
private int _priceA;
private int _priceB;
private EventWaitHandle[] _waithandle;
private readonly IService _service;
//ctor
public ModuleAViewModel(IService service)
{
_service = service;
_modelA = new ModelA();
_waithandle = new ManualResetEvent[2];
_waithandle[0] = new ManualResetEvent(false);
_waithandle[1] = new ManualResetEvent(false);
LoadDataByThread();
}
private void LoadDataByThread()
{
new Thread(() =>
{
new Thread(() =>
{
lock (Locker)
{
_priceA = _service.GetPriceA();
}
_waithandle[0].Set();
}).Start();
new Thread(() =>
{
lock (Locker)
{
_priceB = _service.GetPriceB();
}
_waithandle[1].Set();
}).Start();
WaitHandle.WaitAll(_waithandle);
PriceA = _priceA;
PriceB = _priceB;
}).Start();
}
谢谢