我无法访问的实用程序代码正在向我试图迭代的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()
这两者都不是线程安全的。正确的方法是在这里和实用程序代码中实现一个锁。由于您无法访问代码,您的选择在这里似乎有限,但其他人可能有一些想法。