2016-03-29 10 views
1

Wenn ich erstellen und eine Aufgabe starten undWorauf bezieht sich der TaskScheduler.FromCurrentSynchronizationContext() in einer verschachtelten Aufgabe?

TaskScheduler.FromCurrentSynchronizationContext() 

nenne Ich weiß, dass, in WPF, um es in dem GUI-Thread bezeichnet. Wenn ich eine verschachtelte Aufgabe innerhalb dieser Aufgabe erstelle und diese Methode aufruft, wird sie immer noch auf denselben GUI-Thread verweisen? Ich denke, diese Methode ruft den TaskScheduler auf und ruft eine statische Variable ab, die auf die GUI verweist. Ist das richtig?

Antwort

2

Es bezieht sich auf was auch immer SynchronizationContext in dem Thread installiert ist, den Sie diese Methode aufrufen. Wenn Sie es im Thread-Pool aufrufen, ist dies normalerweise null. Wenn Sie es im UI-Thread aufrufen, handelt es sich um den Kontext des UI-Threads.

Es hängt also davon ab, auf welchem ​​Scheduler Ihre Elternaufgabe ausgeführt wird.

Auch könnte Ihr Code SynchronizationContext.Current geändert haben, aber das ist selten.

All das hat nichts mit Aufgaben zu tun. Es geht darum, wie der aktuelle Thread konfiguriert ist.

+0

Also, wenn ich eine Aufgabe innerhalb einer anderen Aufgabe verschachteln und FromCurrentSynchronizationContext() aufrufen, wird es null zurückgeben? – Maderas

+1

'hängt davon ab, auf welchem ​​Scheduler Ihre vorhandene Aufgabe ausgeführt wird 'existing = übergeordnete Aufgabe. – usr

Verwandte Themen