Truyền thời hạn cho thao tác có thể hủy công việc mạng. Đối với một .NET HttpClient hiện có được cấu hình qua proxy:

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

Ứng dụng cung cấp client và uri. Bản nạp chồng này nhận token hủy; một thời gian chờ quanh việc chờ tác vụ của nó sẽ chỉ giới hạn việc chờ của bên gọi đó. Việc thăm dò cờ hoàn tất cũng gặp vấn đề tương tự: bên gọi có thể rời đi trong khi socket và worker vẫn bận.

Việc hủy tuân theo cách triển khai của máy khách và đường dọn dẹp. Nó không hứa rằng mọi hành động cấp thấp sẽ dừng ở một chỉ thị chính xác. Hãy để đường đó hoàn tất và giải phóng các tài nguyên mà thao tác sở hữu. Đưa việc đọc thân được kiểm soát riêng vào thiết kế; với một thao tác .NET ResponseHeadersRead hiện đại, truyền cùng token qua việc đọc thân. Các máy khách khác cung cấp giao diện hủy, dừng và dọn dẹp của riêng chúng.

Một lần thử lại cần kết quả cho lần thử trước. Giữ mã định danh và proxy đã chọn, yêu cầu hủy khi cần và tránh mất tác vụ khi khởi động các phương án thay thế vô hạn. Nếu không, một điểm cuối chậm có thể tích tụ công việc nhanh hơn mức ứng dụng giải phóng.

Kết quả từ xa cần được xử lý riêng. Đích có thể đã nhận được một lần gửi khi việc hủy xảy ra. Hãy dùng chính sách khôi phục hoặc idempotency của ứng dụng; dừng công việc cục bộ không hoàn tác một hành động từ xa.

Bài viết liên quan