WPF thread e GUI como acessar o objeto de diferentes threads?
Eu tenho um thread que chama um objeto que recebe algumas coisas da Internet. Quando este objeto é preenchido com todas as informações necessárias, ele gera um evento com um objeto com todas as informações. O evento é consumido pelo controlador que iniciou o encadeamento.
O objeto retornado do evento é então adicionado a uma coleção que é vinculada à GUI por meio de uma abordagem do View Model.
O problema é que eu não posso usar o CheckAccess com a ligação ... como posso corrigir o problema de usar o objeto que foi criado a partir de um outro segmento do principal?
O erro que recebo quando adiciono o objeto à coleção do thread principal é:
Esse tipo de CollectionView não oferece suporte a alterações em seu SourceCollection de um encadeamento diferente do encadeamento do Dispatcher.
Este é o controlador:
public class WebPingerController
{
private IAllQueriesViewModel queriesViewModel;
private PingerConfiguration configuration;
private Pinger ping;
private Thread threadPing;
public WebPingerController(PingerConfiguration configuration, IAllQueriesViewModel queriesViewModel)
{
this.queriesViewModel = queriesViewModel;
this.configuration = configuration;
this.ping = new Pinger(configuration.UrlToPing);
this.ping.EventPingDone += new delPingerDone(ping_EventPingDone);
this.threadPing = new Thread(new ThreadStart(this.ThreadedStart));
}
void ping_EventPingDone(object sender, QueryStatisticInformation info)
{
queriesViewModel.AddQuery(info);//ERROR HAPPEN HERE
}
public void Start()
{
this.threadPing.Start();
}
public void Stop()
{
try
{
this.threadPing.Abort();
}
catch (Exception e)
{
}
}
private void ThreadedStart()
{
while (this.threadPing.IsAlive)
{
this.ping.Ping();
Thread.Sleep(this.configuration.TimeBetweenPing);
}
}
}