我正在使用VB.Net并想使用LinkedList。唯一的问题是它是一个多线程应用程序。我在MSDN上看到,Syncroot是ICollection接口的显式实现。我发现人们想要用List(Of T)做类似的事情。似乎解决方案是将列表转换为接口。
我试图做我想象的在VB.Net中做类似的事情,基本上:
Dim TestLinkedList = New LinkedList(Of Long)
SyncLock (Ctype(TestLinkedList, ICollection)).SyncRoot
.
.
.
End SyncLock
以上是否正确?
答案 0 :(得分:2)
它会起作用,这就是所有可以说的。 SyncRoot是.NET 1.1的一个错误,没有理由继续这种做法。
Dim list = New LinkedList(Of Long)
Dim listLock = New Object
...
SyncLock(listLock)
...
End SyncLock
答案 1 :(得分:0)
ICollection.SyncRoot
通常被认为是一个坏主意。您应该锁定集合本身,或锁定您创建的单独锁定对象