Ich lerne immer noch das gesamte Task-Konzept und TPL. Nach meinem derzeitigen Verständnis werden die SynchronizationContext-Funktionen (falls vorhanden) von await
verwendet, um die Aufgabe "irgendwo" zu versenden. Auf der anderen Seite verwenden die Funktionen in der Task
Klasse nicht den Kontext, richtig?Wie Sie eine Aufgabe erhalten, die SynchronizationContext verwendet? Und wie wird SynchronizationContext überhaupt verwendet?
So zum Beispiel Task.Run(...)
wird immer die Aktion auf einem Worker-Thread des Thread-Pools und ignorieren Sie die SynchronizationContext.Current
vollständig. await Foobar()
würde den Kontext verwenden, um die generierte Aufgabe nach der await
?
Wenn das stimmt, ist meine Frage: Wie kann ich eine Task
erhalten, die tatsächlich eine Aktion ausführt, aber mit SynchronizationContext.Current.Send/Post
?
Und kann jemand eine gute Einführung in SynchronizationContext
empfehlen, insbesondere wann und wie sie vom Rest des Frameworks verwendet werden? Die MSDN scheint sehr leise über die Klasse zu sein. Die Top-Google-Treffer (here und here) scheinen nur auf das Senden von Windows Forms zugeschnitten zu sein. Stephen Cleary schrieb an article, was schön ist zu lernen, welche Kontexte bereits existieren und wie sie funktionieren, aber ich habe kein Verständnis dafür, wo und wann sie tatsächlich verwendet werden.
ah, schön. Vielen Dank. Gibt es einen Unterschied zwischen "Task.Run" und "Task.Factory.StartNew"? (Ich meine .. jeden anderen Unterschied als das "' Task.Factory.StartNew' akzeptieren einige Parameter, die 'Task.Run' nicht";)) – Imi
Nein, es gibt keinen anderen Unterschied zwischen ihnen. – Dennis
_Look in diesem Artikel._ Vielen Dank für den Link. Ich habe diesen Artikel bereits gelesen und ihn in meiner Frage verlinkt - sehr gut, um zu verstehen, welche Kontexte existieren und warum sie überhaupt eingeführt wurden. Irgendwelche anderen guten Quellen, vielleicht im Detail darüber, welche Klasse die Kontexte wann verwendet? Oder gehe ich falsch an die TPL heran und lese "Warum sollte ich mich eigentlich nie darum kümmern"? : D. – Imi