Yeka Ukuvimba i-WinForms Ngesikhathi Ukuhlolwa kwe-proxy Kusebenza
Shintsha i-Task.WaitAll ehambisanayo kusiphathi somcimbi we-UI ngamaqembu alindwayo anomkhawulo, bese uvuselela izilawuli kumongo we-UI oqhubekayo.
I-Task.WaitAll kusiphathi sokuchofoza se-WinForms ivimba iwindi ngisho noma ukuhlolwa ngokwako kusebenzisa i-HTTP engahambisani. Intambo ye-UI ayikwazi ukucubungula imiyalezo, futhi ama-continuation abanjiwe angase adinge leyo ntambo evinjiwe.
Ku-.NET 6 noma ngemuva kwalokho, linda iqembu elinomkhawulo esikhundleni salokho:
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;
}
}Lokhu kungokwefomu elikhona eline-System.Linq ne-System.Threading.Tasks etholakalayo. I-CheckProxyAsync yenza ukufaka nokukhipha okungahambisani okunomkhawulo futhi ibuyisela umphumela owodwa; ayilawuli izilawuli zisuka kuntambo yangemuva. I-ShowResults ne-ShowCheckError izindlela ze-application.
I-continuation evamile ye-await ibuyela kumongo we-UI lapho isiphathi saqala khona, ngakho i-ShowResults ingavuselela izilawuli. Ikhodi esebenza ngokusobala kwelinye intambo kufanele idlulise ukufinyelela kwezilawuli ngomshini we-WinForms osekelwe.
Uhlu lwe-proxy lwamahhala lungahlinzeka ngamakheli okufaka; dlulisa izivumelwano ezisetshenziswa yi-CheckProxyAsync kuphela. Isishiyagalombili yisabelomali sesibonelo. Iqembu elilandelayo lilinda ukuhlolwa okunensayo kakhulu eqenjini lamanje, lishintsha i-throughput ethile ngokwakhiwa kwemisebenzi okunomkhawulo. Gcina izikhathi zokugcina zokuhlolwa ngakunye kanye nokukhansela ku-CheckProxyAsync; ukulinda iqembu akukwazi ukwenza umsebenzi wenethiwekhi ongenamkhawulo uqede.