遍历不断变化的SortedDictionary



我无法访问的实用程序代码正在向我试图迭代的SortedDictionary(Integer,RowData)添加行。它正在将新的RowData添加到列表的末尾。

因此,我认为正确的解决方案是复制SortedDictionary,然后循环使用它。我不必担心同步问题,因为新添加的内容总是在末尾。

但是如何做到这一点呢?我搞不清楚语法,MS的文档是,hmmm,"基本",API对我来说没有任何意义。我想要的是一个SortedDictionary的副本,制作另一个Sorted Dictionary。但我得到的是某种KeyValuePair数组,我似乎对此一无所知。

Dim TempR as KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

那个告诉我它不能复制它,因为其中一个是一维数组,而另一个不是。所以我尝试了

Dim TempR() as KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

然后它抱怨TempR无效。但你不能新它,或者至少我不能。

我在这里做错了什么?有简单的方法吗?

在您的示例代码中,您需要将数组初始化为pRowDatas:的大小

Dim TempR(0 To pRowDatas.Count-1) As KeyValuePair(Of Integer, RowData)
pRowDatas.CopyTo(TempR, 0)

还有一种ToArray扩展方法可以使用:

Dim TempR As KeyValuePair(Of Integer, RowData) = pRowDatas.ToArray()

这两者都不是线程安全的。正确的方法是在这里和实用程序代码中实现一个锁。由于您无法访问代码,您的选择在这里似乎有限,但其他人可能有一些想法。

相关内容

  • 没有找到相关文章

最新更新