Serahkan tarikh akhir kepada operasi yang boleh membatalkan kerja rangkaian. Untuk .NET HttpClient sedia ada yang dikonfigurasikan melalui proksi:

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

Aplikasi menyediakan client dan uri. Beban lebih ini menerima token pembatalan; had masa di sekeliling tungguan tugasnya hanya akan mengehadkan tungguan pemanggil itu. Pengundian bendera penyiapan mempunyai masalah yang sama: pemanggil boleh pergi sementara soket dan pekerja kekal sibuk.

Pembatalan mengikut pelaksanaan klien dan laluan pembersihan. Ia tidak menjanjikan setiap tindakan peringkat rendah berhenti pada arahan yang tepat. Biarkan laluan itu selesai dan lepaskan sumber yang dimiliki operasi. Sertakan pembacaan badan yang dikawal secara berasingan dalam reka bentuk; untuk operasi .NET ResponseHeadersRead moden, serahkan token yang sama melalui pembacaan badan. Klien lain menyediakan antara muka pembatalan, henti dan pembersihan mereka sendiri.

Cubaan semula memerlukan hasil untuk cubaan sebelumnya. Simpan pengecamnya dan proksi yang dipilih, minta pembatalan apabila perlu dan elakkan kehilangan tugas semasa memulakan pengganti tanpa henti. Jika tidak, titik akhir yang perlahan boleh mengumpul kerja lebih cepat daripada yang dilepaskan aplikasi.

Hasil jauh memerlukan pengendalian berasingan. Destinasi mungkin sudah menerima penghantaran apabila pembatalan berlaku. Gunakan dasar pemulihan atau idempotensi aplikasi; menghentikan kerja tempatan tidak membatalkan tindakan jauh.

Artikel berkaitan