Sgrios ruitheamh sgrùdaidh proxy WinForms gu lèir
Cùm aon thùs sgriosaidh airson ruitheamh sgrùdaidh proxy WinForms, sgaoil an sgrios tro obair HTTP agus cuir stad air adhartas na liosta.
Bu chòir don phutan Sgrios an ruitheamh a stad. Ma ghlacas gach sgrùdadh proxy an sgrios agus ma thilleas e gu h-àbhaisteach, bidh an lùib a-muigh dìreach a' gluasad chun an ath phroxy. An uairsin tha an scrion a' coimhead mar nach do rinn Sgrios dad.
Ann an .NET WinForms ùr-nodha, cùm aon thùs mar raon foirme agus leig leis an sgrios ruighinn air an làimhseachadh tachartais:
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();Is e configuredProxies an liosta URI proxy a tha am prògram air a pharsadh mu thràth. Faodaidh sreathan bhon liosta proxy an-asgaidh sgrùdadh ceadaichte air targaid phoblach a bhiadhadh; cùm a' phròtacal agus cleachd a-mhàin na seòrsaichean a tha an làimhseachadh seo a' toirt taic dhaibh. Bidh an UI a' feitheamh ri gach obair, mar sin tha an lùib teachdaireachdan fhathast saor gus an cliog sgrios fhaighinn.
Thoir an tòcan don lìonra
Feumaidh an sgrùdadh fa leth an tòcan sin a ghabhail. Seo mar a dh'fhaodadh sgrùdadh HTTP giorraichte coimhead:
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);
}Buineas probeUri agus RecordResult don sgrùdaiche a th' ann. Cùm crìoch iomchaidh air meud an fhreagairt agus ùine-fheitheimh don phuing deiridh seo. Faodaidh sgrùdaiche cinneasachaidh cliantean ath-chleachdadh a rèir slighe; tha an earrann a' sealltainn càit a bheil an sgrios a' siubhal, chan e dealbhadh poll ceangail.
Ma bu chòir proxy air fàiligeadh a chlàradh agus a leum, glac na fàillidhean lìonra a thathar an dùil a chluich timcheall an sgrùdaidh fa leth. Leig le sgrios an ruitheimh teicheadh chun an làimhseachaidh a-muigh. Airson sgrùdaidhean co-shìnte, roinn tòcan an ruitheimh le gach neach-obrach agus feith air an crìochnachadh mus cuirear ruitheamh eile an comas.