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);
    });

Օգտագործեք սահմանափակ աշխատողների լողավազան՝ յուրաքանչյուր վերջնակետի համար առանձին խնդիր սկսելու փոխարեն։ Թույլատրված հանրային թիրախների դեմ ստուգումների համար փրոքսիների անվճար ցանկը տալիս է թեկնածու տողեր. զոնդը կառուցելիս պահպանեք յուրաքանչյուր գրառման արձանագրությունը։ .NET-ի այս պլանավորման հատվածը ենթադրում է փրոքսիին տեղյակ ProbeAsync և թելերի համար անվտանգ observations հավաքիչ։ Ութը պատկերավոր սահման է, ոչ թե չափված օպտիմում։ Զոնդին դեռ պետք են սահմաններ յուրաքանչյուր փորձի համար և ամբողջ աշխատանքի չեղարկում։

Պահեք յուրաքանչյուր ավարտված արդյունքը իր մուտքային տվյալների հետ, նույնիսկ երբ ավարտի հերթականությունը տարբեր է։ Գրանցեք արձանագրությունը, վերջնակետը, թիրախը, մեթոդը, անցած ժամանակը և ելքը։ Կապի ձախողումը, փրոքսի մուտքի մերժումը, մերժված CONNECT-ը և կայքից ստացված պատասխանը տարբեր դիտարկումներ են։

TCP պորտի բացումը չի ապացուցում փրոքսիի հետ բանակցությունը։ Փրոքսիի հասցեն որպես կայք ներբեռնելը նույնպես տարբերվում է այն թիրախը հարցնելու համար օգտագործելուց։

Ընտրեք թիրախը և մեթոդը ըստ պահանջվող կարողության։ HEAD-ը կարող է խնայել մարմնի թրաֆիկը, բայց չի ապացուցում, որ GET-ը վերադարձնում է օգտակար բովանդակություն. կայքը կարող է մերժել մեկը և թույլատրել մյուսը։ HTTPS-ը ավելացնում է CONNECT և նպատակակետի TLS, որոնք բացակայում են սովորական HTTP-ում։ Ելքի հասցեն նպատակակետի կողմի ևս մեկ դիտարկում է՝ առանձին կարգավորված մուտքից։

Սահմանափակ աշխատանքը թույլ չի տալիս ստուգիչին սպառել սեփական սոկետները, հիշողությունը կամ պլանավորիչը մինչև երթուղու գնահատումը։ Փուլային արդյունքը մնում է օգտակար ընտրության քաղաքականության համար՝ չպնդելով, թե մեկ հաջող նպատակակետ վերջնակետին դարձնում է համընդհանուր լավ։

Առնչվող հոդվածներ