Używam kontekstu usług RIA Services w aplikacji Silverlight 4 do ładowania danych. Jeśli używam kontekstu z wątku interfejsu użytkownika, czy wywołanie zawsze będzie w wątku interfejsu użytkownika?Który wątek jest wywołaniem zwrotnym wykonywanym podczas wykonywania asynchronicznego wywołania usług RIA?
Innymi słowy, czy oddzwonienie jest zawsze w tym samym wątku, co połączenie?
Niektóre przykładowy kod poniżej ilustrujący scenariusz ...
private void LoadStuff()
{
MyDomainContext context = new MyDomainContext();
context.Load(context.GetStuffQuery(), op =>
{
if (!op.HasError)
{
// Use data.
// Which thread am I on?
}
else
{
op.MarkErrorAsHandled();
// Do error handling
}
}, null
);
}
Dzięki Jehofowi warto o tym wiedzieć i to właśnie znalazłem w praktyce. Interesuje mnie jednak uzyskanie ostatecznej odpowiedzi na moje konkretne pytanie - czy zawsze jest to wywołujący wątek, który otrzymuje wywołanie zwrotne? (na przykład, jeśli nie wywołujemy wątku UI). – Chris
@ Chris: Tak, wywołanie zwrotne zostanie wykonane w wątku wywołującym. Ładowanie odbywa się w wątku tła i nie jest blokujące dla wątku wywołującego. – Jehof