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 సాధారణ HTTP లో లేని CONNECT మరియు గమ్యస్థాన TLS ను జోడిస్తుంది. నిష్క్రమణ చిరునామా గమ్యస్థాన-వైపు మరో పరిశీలన, కాన్ఫిగర్ చేసిన ప్రవేశం నుండి వేరుగా.

పరిమిత పని తనిఖీదారు మార్గాన్ని అంచనా వేయకముందే తన సాకెట్లు, మెమరీ లేదా షెడ్యూలర్‌ను ఖర్చు చేయకుండా నిరోధిస్తుంది. ఒక విజయవంతమైన గమ్యం ఎండ్‌పాయింట్‌ను అన్నిచోట్లా మంచిది చేస్తుందని నటించకుండా దశలవారీ ఫలితం ఎంపిక విధానానికి ఉపయోగకరంగా ఉంటుంది.

సంబంధిత వ్యాసాలు