当前位置: 代码迷 >> C# >> 这个异常怎么解决
  详细解决方案

这个异常怎么解决

热度:23   发布时间:2016-05-05 04:26:37.0
这个错误如何解决?
using System;
using System.Collections.Generic;
using System.Text;

namespace DummyApp
{
class DummyApp
{
static void Main(string[] args)
{
Queue<int> q = new Queue<int>();

lock(q.SyncRoot)
{
DoSomething();
}
}
}
}

编译的时候出错

'System.Collections.Generic.Queue<int>' does not contain a definition for
'SyncRoot'
------解决思路----------------------
lock(q)
{
    DoSomething();
}
------解决思路----------------------

 Queue<int> q = new Queue<int>();
            lock (q)
            {
                DoSomething();
            }

------解决思路----------------------
lock就是把{}中的代码段锁定,防止多个线程同时运行该代码段。
------解决思路----------------------
Queue就没有SyncRoot这个属性
你可以static一个object,然后lock(obj),但你就一个控制台,你写lock有啥用啊?
就算学习也不是这样学习的啊
------解决思路----------------------
引用:
lock (((ICollection)q).SyncRoot)
{
    DoSomething();
}

这样可以吗??

可以
语法上没问题

不过你要干什么呢?
  相关解决方案