د WinForms پروکسي ازموینې ټوله چلونه لغوه کړئ
د WinForms پروکسي ازموینې چلونې لپاره یو لغوه کولو سرچینه وساتئ، لغوه کول د HTTP کار له لارې خپاره کړئ او د لیست مخته تګ ودروئ.
د لغوه کولو تڼۍ باید چلونه ودروي. که هر پروکسي ازموینه لغوه کول ونیسي او په نورمال ډول بیرته راشي، بهرنۍ حلقه یوازې بل پروکسي ته ځي. بیا سکرین داسې ښکاري لکه لغوه کولو چې هېڅ نه دي کړي.
په عصري .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 د موجوده ازموونکي دي. د دې پای ټکي لپاره مناسب ځواب اندازه محدودیت او وخت محدودیت وساتئ. تولیدي ازموونکی کولی شي پیرودونکي د لارې له مخې بیا وکاروي؛ ټوټه ښیي چې لغوه کول چېرته ځي، نه د اړیکو حوض ډیزاین.
که ناکام پروکسي باید ثبت او پرېښودل شي، د انفرادي ازموینې شاوخوا تمه شوي شبکې ناکامي ونیسئ. د چلونې لغوه کول بهرني مدیریت کوونکي ته وتښتي. د موازي ازموینو لپاره، د چلونې ټوکن له هر کارګر سره شریک کړئ او د بل چلونې فعالولو دمخه د دوی بشپړیدو ته انتظار وکړئ.