W jednostce testowanie komponentu potrzebuję zweryfikować, w jaki sposób komponent reaguje na zadania wykonywane w różnym czasie.Jak utworzyć zadanie <> Mogę wykonać ręcznie
Jak mogę utworzyć Task<>
, którą mogę rozwiązać w dowolnym momencie?
W jednostce testowanie komponentu potrzebuję zweryfikować, w jaki sposób komponent reaguje na zadania wykonywane w różnym czasie.Jak utworzyć zadanie <> Mogę wykonać ręcznie
Jak mogę utworzyć Task<>
, którą mogę rozwiązać w dowolnym momencie?
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.
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ć? –
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
Kontynuacja zostanie uruchomiona po zakończeniu zadania (zgodnie z określeniem filtru stanu zadania na kontynuacji, jeśli jest to właściwe). – Ani