將類型Dictionary(Of Int16,Polygon)類型的對象作爲參數傳遞給backgroundworker以便後臺工作人員能夠訪問Dictionary中的Polygons時遇到問題。我得到了典型的「調用線程不能訪問這個對象,因爲不同的線程擁有它」的消息。繼承人我有什麼:在另一個線程中使用WPF多邊形
Dim worker As New BackgroundWorker
AddHandler worker.DoWork, AddressOf MeasurePolygons
AddHandler worker.RunWorkerCompleted, AddressOf WorkerCompleted
worker.RunWorkerAsync(PolygonCollection)
PolygonCollection是在類的頂部聲明一個私有變量,它的類型是字典(中的Int16,多邊形)。它將包含1-10個多邊形,並且我想將這個集合傳遞給背景工作者,因爲我在字典中對每個多邊形進行了計算。
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)))。任何幫助將非常感激。謝謝。
編輯: 因此,2友好海報幫助我縮小我的問題,但我仍然堅持如何弄清楚。
當前問題:我有一個Dictionary(Of Int16,Polygon)類型的對象。我需要能夠使用BackgroundWorker訪問在此字典內部的UI線程上創建的每個單獨的Polygon。然後在backgroundworker上,我將基於Dictionary中的Polygon創建一個位圖文件。那麼我如何才能訪問背景工作中的多邊形?謝謝你的幫助。
我冒昧地修改了你的問題標題。也許這會吸引知道這些事情的人...... – Heinzi 2010-11-19 22:27:00