Cuir stad air blocadh WinForms fhad 's a tha sgrùdaidhean progsaidh a' ruith
Cuir bagaichean cuibhrichte air an feitheamh an àite Task.WaitAll sioncronaich ann an làimhsichear tachartais an UI, agus an uair sin ùraich na smachdan anns a' cho-theacsa UI a thèid ath-thòiseachadh.
Task.WaitAll ann an làimhsichear cliog WinForms a' blocadh na h-uinneige eadhon nuair a bhios na sgrùdaidhean fhèin a' cleachdadh HTTP neo-shioncronaich. Chan urrainn do snìomh an UI teachdaireachdan a phròiseasadh, agus dh'fhaodadh gum bi feum aig na leanmhainnean glacte air an aon snìomh blocaichte.
Airson .NET 6 no nas ùire, feith ri baga cuibhrichte na àite:
private async void checkButton_Click(object sender, EventArgs e)
{
checkButton.Enabled = false;
try
{
var entries = proxyList.Lines
.Where(line => !string.IsNullOrWhiteSpace(line));
foreach (var batch in entries.Chunk(8))
{
var results = await Task.WhenAll(batch.Select(CheckProxyAsync));
ShowResults(results);
}
}
catch (Exception error)
{
ShowCheckError(error);
}
finally
{
checkButton.Enabled = true;
}
}Buineas seo do fhoirm a th' ann mar-thà le System.Linq agus System.Threading.Tasks rim faighinn. Bidh CheckProxyAsync a' dèanamh I/O neo-shioncronaich cuibhrichte agus a' tilleadh aon toradh; chan eil e a' làimhseachadh smachdan bho shnìomh cùla. 'S e dòighean aplacaid a th' ann an ShowResults agus ShowCheckError.
Tillidh leanmhainn àbhaisteach await dhan cho-theacsa UI far an do thòisich an làimhsichear, agus mar sin 's urrainn do ShowResults smachdan ùrachadh. Feumaidh còd a tha a' ruith gu soilleir air snìomh eile cead-smachd a chuir tron mheicearrachd WinForms a tha a' faighinn taic.
Faodaidh an liosta progsaidh an-asgaidh seòlaidhean cuir-a-steach a thoirt seachad; na cuir ach pròtacalan a chuireas CheckProxyAsync an gnìomh. 'S e ochd buidseat eisimpleireach. Feithidh an ath bhaga ris an sgrùdadh as moille sa bhaga làithreach, a' malairt cuid de throcadh airson cruthachadh ghnìomhan cuibhrichte. Cùm cinn-latha gach sgrùdaidh agus an cur à bith ann an CheckProxyAsync; chan urrainn do bhith a' feitheamh ri baga toirt air obrachadh lìonra neo-chuibhrichte crìochnachadh.