Tengo un hilo que llama a un objeto que obtiene algunas cosas de Internet. Cuando este objeto se completa con toda la información requerida, se genera un evento con un objeto con toda la información. El evento es consumido por el controlador que ha iniciado el hilo.WPF hilo y GUI cómo acceder a objetos de hilo diferente?
El objeto devuelto del evento se agrega a una colección enlazada a la GUI mediante un enfoque de Ver modelo.
El problema es que no puedo usar CheckAccess con el enlace ... ¿cómo puedo solucionar el problema de usar Objeto que se ha creado a partir de otro hilo del principal?
El error que recibo cuando agrego el objeto a la colección de la rosca principal es:
Este tipo de CollectionView no admite cambios en su SourceCollection de un hilo diferentes de la rosca Dispatcher.
Esta el 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);
}
}
}
¿Puedes publicar la definición de UIThread en este contexto, por favor? Gracias. No sé en qué sustituirlo en mi código – Para
La misma pregunta. ¿Qué significa UIThread exactamente? – zero51
Debe ser una subclase de 'System.Windows.Threading.DispatcherObject'. – Jalal