J'ai le code suivant qui modifie une collection observable de 'screens' chaque fois qu'un utilisateur quitte.WPF: La modification de CollectionView à partir de Dispatcher continue de générer des erreurs
void OnUserLeft(int roomId, int userId, string username)
{
client.ClientDispatcher.Invoke(
(Action<int>)((id) =>
{
Console.WriteLine("Hello before the storm!");
var screensToCheck = client.Screens.Where(s => s.CpuId == id).ToList();
screensToCheck.Each(s => client.Screens.Remove(s));
Console.WriteLine("Hello there!");
}), userId);
}
C'est enveloppé dans un appel à Dispatcher, soi-disant pour dépasser les problèmes de filetage liés à CollectionViews du client. Toutefois, je reçois toujours l'exception suivante:
Ce type de CollectionView ne prend pas en charge les modifications apportées à sa SourceCollection à partir d'un thread différent du thread Dispatcher.
Le répartiteur que vous voyez ci-dessus est défini dans MainViewModel de l'application WPF (nous utilisons MVVM), comme ceci:
public Dispatcher ClientDispatcher
{
get { return Dispatcher.CurrentDispatcher; }
}
Qu'est-ce que c'est exactement "le répartiteur du client"? – Jon
Désolé, ajouté un peu sur le 'ClientDispatcher' à la question. – Dusda