Originariamente inviato da GliderKite
L'ho provata

, sia quando l'avevo pensata per il mio progetto reale, sia quando ho creato un progetto di test che ora ti posto:
codice:
Imports System.Threading
Class MainWindow
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim t As New Thread(AddressOf Me.CreateObj)
t.SetApartmentState(ApartmentState.STA)
t.Start()
End Sub
Private Sub CreateObj()
Dim rect As Rectangle
For i = 0 To 50000
Thread.Sleep(1)
rect = New Rectangle With {.Height = 200, .Width = 300, .Fill = New SolidColorBrush(Colors.Green)}
Dispatcher.BeginInvoke(Sub() Me.TheGrid.Children.Add(rect))
Next
End Sub
End Class
E l'eccezione avviene dopo un po di giri nel ciclo...
In ogni caso grazie per la disponibilità, appena posso provo la tua ultima risposta e ti faccio sapere

Faccio notare che se non modifico l'appartment state in STA si verifica un'eccezione quando creo il rettangolo.
certo che così ti da problemi
, devi creare il Rectangle nel Dispatcher...
codice:
Dispatcher.BeginInvoke(Sub() Me.grid.Children.Add(New Rectangle With {.Height = 200, .Width = 300, .Fill = New SolidColorBrush(Colors.Green)}))
comunque usa l'ultimo metodo che ti ho postato, è molto meglio