当我将一个类型为Dictionary(Of Int16, Polygon)的对象作为参数传递给后台工作者时,我遇到了一个问题,因此后台工作者能够访问字典中的多边形。我得到了典型的“调用线程无法访问此对象,因为不同的线程拥有它”的消息。这是我的代码:
Dim worker As New BackgroundWorker
AddHandler worker.DoWork, AddressOf MeasurePolygons
AddHandler worker.RunWorkerCompleted, AddressOf WorkerCompleted
worker.RunWorkerAsync(PolygonCollection)
PolygonCollection是该类顶部声明的一个私有变量,类型为Dictionary(Of Int16, Polygon)。它将包含1-10个多边形,并且我想将此集合传递给BackgroundWorker,因为我要对字典中的每个多边形进行计算。
Dim TempPolygonCollection As Dictionary(Of Int16, Polygon)
TempPolygonCollection = CType(e.Argument, Dictionary(Of Int16, Polygon))
For i = 0 To TempPolygonCollection.Count - 1
If TempPolygonCollection.ContainsKey(CShort(i)) Then
Dim rtb As New RenderTargetBitmap(CInt(800), CInt(600), 96D, 96D, PixelFormats.Default)
rtb.Render(TempPolygonCollection.Item(CShort(i)))
Dim encoder As New BmpBitmapEncoder
encoder.Frames.Add(BitmapFrame.Create(rtb))
End If
Next i
错误出现在rtb.Render(TempPolygonCollection.Item(CShort(i)))。非常感谢任何帮助。
编辑: 所以这两位友好的张贴者帮我缩小了问题的范围,但我仍然不知道如何解决它。
当前问题:我有一个类型为Dictionary(Of Int16, Polygon)的对象。我需要能够访问此字典中创建在UI线程上的每个单独的多边形。然后,在后台工作程序中,我将基于字典中的多边形创建位图文件。那么我该如何在后台工作程序中访问这些多边形?感谢任何帮助。