Przekaż termin operacji, która może anulować pracę sieciową. Dla istniejącego .NET HttpClient skonfigurowanego przez proxy:

using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);

Aplikacja udostępnia client i uri. To przeciążenie otrzymuje token anulowania; limit czasu wokół oczekiwania na jego zadanie ograniczyłby tylko oczekiwanie tego wywołującego. Odpytywanie flagi ukończenia ma ten sam problem: wywołujący może odejść, podczas gdy gniazda i wątki robocze pozostają zajęte.

Anulowanie podąża za implementacją klienta i ścieżką czyszczenia. Nie obiecuje, że każde działanie niższego poziomu zatrzyma się na dokładnej instrukcji. Pozwól tej ścieżce się zakończyć i zwolnij zasoby należące do operacji. Uwzględnij w projekcie osobno kontrolowany odczyt treści; w nowoczesnej operacji .NET ResponseHeadersRead przekaż ten sam token przez odczyt treści. Inni klienci udostępniają własne interfejsy anulowania, przerwania i czyszczenia.

Ponowna próba wymaga wyniku poprzedniej próby. Zachowaj jej identyfikator i wybrane proxy, zażądaj anulowania, gdy to konieczne, i unikaj utraty zadania przy nieskończonym uruchamianiu zamienników. Inaczej wolny punkt końcowy może gromadzić pracę szybciej, niż aplikacja ją zwalnia.

Wynik zdalny wymaga osobnej obsługi. Miejsce docelowe mogło już otrzymać wysyłkę, gdy następuje anulowanie. Użyj polityki odzyskiwania lub idempotencji aplikacji; zatrzymanie pracy lokalnej nie cofa zdalnego działania.

Powiązane artykuły