Cealaigh reáchtáil iomlán seiceála seachfhreastalaí WinForms
Coinnigh aon fhoinse chealaithe do reáchtáil seiceála seachfhreastalaí WinForms, scaip an cealú trí obair HTTP agus stop an liosta ag dul chun cinn.
Ba cheart an cnaipe Cealaigh an reáchtáil a stopadh. Má ghlacann gach seiceáil seachfhreastalaí an cealú agus má fhilleann sé go normálta, ní dhéanann an lúb sheachtrach ach bogadh go dtí an chéad seachfhreastalaí eile. Ansin breathnaíonn an scáileán mar nár dhein Cealaigh rud ar bith.
I WinForms .NET nua-aimseartha, coinnigh aon fhoinse mar réimse foirme agus lig don chealú teacht ar an láimhseálaí imeachta:
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 é configuredProxies liosta URI seachfhreastalaí atá parsáilte cheana ag an bhfeidhmchlár. Is féidir le sraitheanna ón liosta seachfhreastalaí saor in aisce seiceáil cheadaithe ar sprioc phoiblí a chothú; coinnigh an prótacal agus ná húsáid ach cineálacha a thacaíonn an láimhseálaí seo leo. Fanann an UI le gach oibríocht, mar sin fanann an lúb teachtaireachtaí saor chun an cliceáil chealaithe a fháil.
Tabhair an comhartha chuig an líonra
Caithfidh an tseiceáil aonair an comhartha sin a ghlacadh. Seo mar a d'fhéadfadh seiceáil HTTP ghiorraithe breathnú:
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);
}Baineann probeUri agus RecordResult leis an seiceálaí atá ann cheana. Coinnigh teorainn chuí ar mhéid an fhreagra agus am istigh don phointe deiridh seo. Is féidir le seiceálaí táirgeachta cliaint a athúsáid de réir bealaigh; taispeánann an sliocht cá dtéann an cealú, ní dearadh linne naisc.
Más gá seachfhreastalaí ar theip orthu a thaifeadadh agus a scipeáil, gabh na teipeanna líonra a bhfuiltear ag súil leo timpeall na seiceála aonair. Lig cealú na reáchtála éalú chuig an láimhseálaí seachtrach. Le seiceálacha comhthreomhara, roinn comhartha na reáchtála le gach oibrí agus fan go gcríochnóidh siad sula gcumasófar reáchtáil eile.