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 जोडते. निर्गमन पत्ता गंतव्य-बाजूचे आणखी एक निरीक्षण आहे, संरचित प्रवेशापासून वेगळे.

मर्यादित कार्य तपासकर्त्याला मार्गाचे मूल्यांकन करण्यापूर्वी स्वतःचे सॉकेट, मेमरी किंवा शेड्युलर संपवण्यापासून रोखते. एका यशस्वी गंतव्यामुळे एंडपॉइंट सर्वत्र चांगला होतो असे भासविल्याशिवाय टप्प्याटप्प्याने मिळालेला निकाल निवड धोरणासाठी उपयुक्त राहतो.

संबंधित लेख