Vb.net 需要链接列表的Syncroot(共T个)

Vb.net 需要链接列表的Syncroot(共T个),vb.net,multithreading,collections,synchronization,Vb.net,Multithreading,Collections,Synchronization,我正在使用VB.Net,希望使用LinkedList。唯一的问题是它是一个多线程应用程序。我从MSDN中看到Syncroot是ICollection接口的显式实现。我发现人们想用列表(Of T)做类似的事情。似乎解决方案是将列表强制转换到接口 我曾尝试在VB.Net中做我想象中类似的事情,基本上: Dim TestLinkedList = New LinkedList(Of Long) SyncLock (Ctype(TestLinkedList, ICollection)).SyncRoot

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

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

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

上面的说法正确吗?

它会起作用的,可以这么说。SyncRoot是.NET1.1中的一个错误,没有理由继续这种做法

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

SyncLock(listLock)
...
End SyncLock

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