Nadal uczę się całej koncepcji zadań i licencji OC. Z mojego obecnego rozumienia funkcje SynchronizationContext (jeśli są obecne) są używane przez await
do wysłania zadania "gdzieś". Z drugiej strony funkcje w klasie Task
nie używają kontekstu, prawda?Jak uzyskać zadanie, które korzysta z Kontakty synchronizacji? A w jaki sposób używasz SynchronizationContext?
Tak na przykład Task.Run(...)
będzie zawsze wywoływał akcję w wątku roboczym puli wątków i całkowicie ignoruje numer SynchronizationContext.Current
. await Foobar()
użyłoby kontekstu do wykonania wygenerowanego zadania po await
?
Jeśli to prawda, moje pytanie brzmi: Jak uzyskać Task
, który faktycznie uruchamia akcję, ale jest wywoływany za pomocą SynchronizationContext.Current.Send/Post
?
Czy ktoś może polecić dobre wprowadzenie do SynchronizationContext
, zwłaszcza kiedy i jak są używane przez resztę schematu? MSDN wydaje się być bardzo cichy na temat klasy. Najlepsze hity Google (here i here) wydają się być dostosowane tylko do wysyłania formularzy Windows Forms. Stephen Cleary napisał: an article, co jest miłe, aby dowiedzieć się, jakie konteksty już istnieją i jak działają, ale brakuje mi zrozumienia, gdzie i kiedy są one rzeczywiście używane.
ah, nice. dzięki. Czy jest jakaś różnica między 'Task.Run' i' Task.Factory.StartNew'? (Mam na myśli ... każdą inną różnicę niż to, że '' Task.Factory.StartNew' akceptuje jakiś parametr, którego 'Task.Run' nie ma";)) – Imi
Nie, nie ma między nimi żadnej różnicy. – Dennis
_Spójrz na ten artykuł. Dziękujemy za link. Przeczytałem już ten artykuł i powiązałem go z moim pytaniem - bardzo dobre do zrozumienia, jakie konteksty istnieją i dlaczego zostały wprowadzone w pierwszej kolejności. Jakieś inne dobre źródła, może wchodząc w szczegóły, która klasa używa kontekstów, kiedy? Czy mogę podejść do TPL niesłusznie i powinienem przeczytać o "Dlaczego właściwie nigdy nie powinienem się tym przejmować"? :RE. – Imi