相关疑难解决方法(0)

为什么锁定对象必须是静态的?

使用私有静态只读对象来锁定多线程是很常见的.我知道私有通过收紧封装来减少锁定对象的入口点,因此可以访问最重要的内容.

但为什么静止?

private static readonly object Locker = new object();
Run Code Online (Sandbox Code Playgroud)

最后,该字段仅在我的班级中使用,我也可以使用它:

private readonly object Locker = new object();
Run Code Online (Sandbox Code Playgroud)

任何意见?

更新:

作为一个例子,我粘贴了这段代码(只是一个例子).我可以使用静态或非静态锁定器,两者都可以正常工作.考虑到下面的答案,我应该更喜欢这样定义我的储物柜?(对不起,我下周接受采访,需要知道每一个细节:)

private readonly object Locker = new object();
Run Code Online (Sandbox Code Playgroud)

以下是代码:

    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(() =>
                               { …
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking

105
推荐指数
3
解决办法
7万
查看次数

标签 统计

c# ×1

locking ×1

multithreading ×1