2015-01-11 12 views

Odpowiedz

15

Możesz użyć TaskCompletionSource, aby utworzyć całkowicie "ręczne" zadanie.

Reprezentuje strony producenta zadania niezwiązanego do delegata zapewnienie dostępu do strony konsumenta za pośrednictwem właściwości zadań.

Ręcznie się źródłem zakończeniu za Task właściwość konsumenta, i nazywamy SetResult na nim (do woli), aby wykonać zadanie. Zauważ, że masz również SetCanceled i SetException, aby odpowiednio reprezentować anulowania i niepowodzenia.

+0

Dzięki! Czy wiesz, kiedy dokładnie przebiegać będą kontynuacje? Kiedy jest wywoływane 'SetResult'? Jakiś czas później? Czy istnieje sposób, aby to kontrolować? –

+0

Nie jest to zależne od wątku - metody "Set ***" mogą być wywoływane w dowolnym wątku, a sam obiekt jest bezpieczny dla wątków. Dostarcza także rodzinę metod "TrySet ***" do radzenia sobie z rasami. – Ani

+0

Kontynuacja zostanie uruchomiona po zakończeniu zadania (zgodnie z określeniem filtru stanu zadania na kontynuacji, jeśli jest to właściwe). – Ani

Powiązane problemy