Ho giocato con i nuovi modelli asincroni CTP e MVVM. Ho convertito un vecchio programma che utilizzava un worker in background e ho segnalato lo stato di avanzamento per aggiornare una raccolta nel mio modello. Ho convertito a qualcosa come cosìasync Task.Run con MVVM
TaskEx.Run(async() =>
{
while (true)
{
// update ObservableCollection here
}
await TaskEx.Delay(500);
});
A mio avviso mi legano alla mia ViewModel che espone questa collezione osservabile. Tuttavia, quando gli aggiornamenti della mia raccolta ottengo la seguente eccezione
Questo tipo di CollectionView non supporta le modifiche apportate a SourceCollection da un thread diverso dal thread Dispatcher.
Non sono sicuro di quale sia il modo corretto di tornare al thread dell'interfaccia utente quando viene eseguito in questo modo.
Come nota a margine, c'è una versione aggiornata del 'async' nel Visual Studio 11 Developer Preview che è possibile scaricare. – svick