【问题标题】:Need a Syncroot for a LinkedList(of T)LinkedList(of T) 需要一个 Syncroot
【发布时间】:2010-02-09 09:02:08
【问题描述】:

我正在使用 VB.Net 并希望使用 LinkedList。唯一的问题是它是一个多线程应用程序。我从 MSDN 看到 Syncroot 是 ICollection 接口的显式实现。我发现人们想用 List(Of T) 做类似的事情。似乎解决方案是将列表转换为界面。

我已经尝试在 VB.Net 中做我想象中类似的事情,基本上:

Dim TestLinkedList = New LinkedList(Of Long)
SyncLock (Ctype(TestLinkedList, ICollection)).SyncRoot
    .
    .
    .
End SyncLock

上面说的对吗?

【问题讨论】:

    标签: vb.net multithreading collections synchronization


    【解决方案1】:

    它会起作用的,这就是它所能说的。 SyncRoot 是 .NET 1.1 的一个错误,没有理由继续练习。

    Dim list = New LinkedList(Of Long)
    Dim listLock = New Object
    ...
    
    SyncLock(listLock)
    ...
    End SyncLock
    

    【讨论】:

      【解决方案2】:

      ICollection.SyncRoot 通常被认为是一个坏主意。您应该锁定集合本身,或者锁定您创建的单独锁定对象

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        相关资源
        最近更新 更多