var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

Hər son nöqtə üçün ayrıca tapşırıq başlatmaq əvəzinə məhdud işçi hovuzu istifadə edin. İcazə verilmiş ictimai hədəflərə qarşı yoxlamalar üçün pulsuz proxy siyahısı namizəd sətirləri verir; zond qurarkən hər qeydin protokolunu saxlayın. Bu .NET planlama fraqmenti proxy-dən xəbərdar ProbeAsync və axın-təhlükəsiz observations toplayıcısını nəzərdə tutur. Səkkiz nümunəvi həddir, ölçülmüş optimal deyil. Zond yenə də hər cəhd üçün limitlərə və bütün işin ləğvinə ehtiyac duyur.

Tamamlanma sırası fərqli olsa da, hər tamamlanmış nəticəni girişi ilə birlikdə saxlayın. Protokol, son nöqtə, hədəf, metod, keçən vaxt və nəticəni qeyd edin. Bağlantı uğursuzluğu, proxy girişinin rədd edilməsi, rədd edilmiş CONNECT və saytdan alınan cavab fərqli müşahidələrdir.

TCP portunun açılması proxy danışıqlarını təsdiqləmir. Proxy ünvanını sayt kimi götürmək də onu hədəfi istəmək üçün istifadə etməkdən fərqlənir.

Hədəfi və metodu tələb olunan imkana görə seçin. HEAD gövdə trafikinə qənaət edə bilər, amma GET-in faydalı məzmun qaytardığını təsdiqləmir; sayt birini rədd edib digərinə icazə verə bilər. HTTPS adi HTTP-də olmayan CONNECT və hədəf TLS-i əlavə edir. Çıxış ünvanı konfiqurasiya edilmiş girişdən ayrı olan, hədəf tərəfin başqa müşahidəsidir.

Məhdud iş yoxlayıcının marşrutu qiymətləndirməzdən əvvəl öz soketlərini, yaddaşını və ya planlaşdırıcısını tükətməsinin qarşısını alır. Mərhələli nəticə bir uğurlu hədəfin son nöqtəni hər yerdə yaxşı etdiyini iddia etmədən seçim siyasəti üçün faydalı qalır.

Əlaqəli məqalələr