የሰርዝ ቁልፍ ሩጫውን ማቆም አለበት። እያንዳንዱ የፕሮክሲ ፍተሻ መሰረዙን ይዞ በተለመደ መንገድ ከተመለሰ፣ ውጫዊው ዑደት በቀላሉ ወደሚቀጥለው ፕሮክሲ ይሸጋገራል። ከዚያ ስክሪኑ ሰርዝ ምንም እንዳላደረገ ይመስላል።

በዘመናዊ .NET WinForms አንድ ምንጭን እንደ ቅጽ መስክ ያዙ እና መሰረዙ የክስተት አስተናጋጁን እንዲደርስ ይፍቀዱ፡

private CancellationTokenSource? activeRun;

private async void startButton_Click(object sender, EventArgs e)
{
    if (activeRun is not null) return;
    using var run = new CancellationTokenSource();
    activeRun = run;
    startButton.Enabled = false;
    try
    {
        foreach (Uri proxy in configuredProxies)
        {
            run.Token.ThrowIfCancellationRequested();
            await CheckProxyAsync(proxy, run.Token);
        }
        statusLabel.Text = "Finished";
    }
    catch (OperationCanceledException) when (run.IsCancellationRequested)
    {
        statusLabel.Text = "Stopped";
    }
    finally
    {
        activeRun = null;
        startButton.Enabled = true;
    }
}

private void cancelButton_Click(object sender, EventArgs e)
    => activeRun?.Cancel();

configuredProxies መተግበሪያው አስቀድሞ የተተነተነ የፕሮክሲ URI ዝርዝር ነው። ከነጻ ፕሮክሲ ዝርዝር የተገኙ ረድፎች የተፈቀደ የህዝብ ግብ ፍተሻ ሊመግቡ ይችላሉ፤ ፕሮቶኮሉን ይጠብቁ እና ይህ አስተናጋጅ የሚደግፋቸውን አይነቶች ብቻ ይጠቀሙ። UI ለእያንዳንዱ ስራ ይጠብቃል፣ ስለዚህ የመልእክት ዑደቱ የሰርዝ ጠቅታውን ለመቀበል ይቀራል።

ቶክኑን ወደ አውታረ መረብ አስተላልፍ

የግለሰብ ፍተሻ ያንን ቶክን መቀበል አለበት። አጠር ያለ HTTP ፍተሻ እንደዚህ ሊመስል ይችላል፡

private async Task CheckProxyAsync(Uri proxy, CancellationToken token)
{
    using var handler = new HttpClientHandler
    {
        Proxy = new System.Net.WebProxy(proxy),
        UseProxy = true
    };
    using var client = new HttpClient(handler);
    using var response = await client.GetAsync(
        probeUri, HttpCompletionOption.ResponseHeadersRead, token);
    response.EnsureSuccessStatusCode();
    string body = await response.Content.ReadAsStringAsync(token);
    RecordResult(proxy, body);
}

probeUri እና RecordResult የነባሩ ፍተሻ አካል ናቸው። ለዚህ መጨረሻ ነጥብ ተገቢ የምላሽ መጠን ገደብ እና የጊዜ ገደብ ያዙ። የምርት ፍተሻ በመንገድ ደንብ ደንበኞችን ሊደግም ይችላል፤ ቁርጥራጩ መሰረዝ የሚጓዝበትን ቦታ ያሳያል፣ የግንኙነት ገንዳ ንድፍ አይደለም።

ያልተሳኩ ፕሮክሲዎች ከተመዘገቡ እና ከተዘለሉ፣ በግለሰቡ ፍተሻ ዙሪያ የሚጠበቁ የአውታረ መረብ ስህተቶችን ያዙ። የሩጫ መሰረዝ ወደ ውጫዊው አስተናጋጅ እንዲወጣ ይፍቀዱ። ለትይዩ ፍተሻዎች የሩጫ ቶክኑን ለእያንዳንዱ ሰራተኛ ያጋሩ እና ሌላ ሩጫ ከመፍቀዳቸው በፊት ማጠናቀቃቸውን ይጠብቁ።

ተዛማጅ ጽሑፎች