Ho la necessità di eseguire un ciclo nel quale vengono creati diversi oggetti Shape che devono essere aggiunti in un contenitore (Panel) per essere visualizzati all'interno dell'applicazione.

Questo che segue è un esempio di ciò che devo fare:

codice:
For i = 0 To 200000
     Contenitore.Children.Add(New Rectangle)
Next
Essendo la quantità di oggetti creati notevole, ciò richiede diverso tempo in questo lasso di tempo l'applicazione è bloccata (l'interfaccia non risponde). Per risolvere questo problema solitamente facevo ricorso alla creazione di un nuovo Thread che si occupava della creazione e della gestione degli oggetti, o più semplicemente facendo ricorso al metodo asincrono BeginInvoke della classe Dispatcher. Tuttavia diversamente dalle mie precedenti esperienze questi metodi non sembrano funzionare, cosi come vengono usati, per risolvere il problema.

codice:
Contenitore.Dispatcher.BeginInvoke(DispatcherPriority.Normal, Sub() CreateObj())

Private Sub  CreateObj()
For i = 0 To 200000
     Contenitore.Children.Add(New Rectangle)
Next
End Sub
La finestra dell'applicazione rimane sempre bloccata fino a quando la creazione di tutti gli elementi non viene completata.

Come posso risolvere il problema? O meglio ancora anticipo il passaggio successivo, come fare in modo che (avendo l'applicazione non bloccata) gli oggetti vengano visualizzati immediatamente dopo essere stati aggiunti al contenitore senza aspettare che il metodo sia completato?

Infatti fino a quando il metodo non è completo non viene visualizzato alcun elemento (ovviamente nell'applicazione vera gli oggetti hanno proprietà tali da poter essere visualizzati, come dimensioni, colore..)

Grazie.