ຍົກເລີກການທຳງານກວດສອບພຣັອກຊີ 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 ເປັນຂອງຕົວກວດສອບທີ່ມີຢູ່. ຮັກສາຂີດຈຳກັດຂະໜາດຄຳຕອບທີ່ເໝາະສົມ ແລະ ເວລາກຳນົດສຳລັບຈຸດສິ້ນສຸດນີ້. ຕົວກວດສອບການຜະລິດສາມາດໃຊ້ລູກຄ້າຄືນຕາມເສັ້ນທາງ; ຕອນນີ້ສະແດງວ່າການຍົກເລີກໄປໃສ, ບໍ່ແມ່ນການອອກແບບສະລອຍການເຊື່ອມຕໍ່.
ຖ້າຕ້ອງບັນທຶກ ແລະ ຂ້າມພຣັອກຊີທີ່ລົ້ມເຫຼວ, ຈັບຄວາມຜິດພາດເຄືອຂ່າຍທີ່ຄາດຫວັງອ້ອມການກວດສອບແຕ່ລະຄັ້ງ. ໃຫ້ການຍົກເລີກການທຳງານຫຼຸດອອກໄປຫາຕົວຈັດການຊັ້ນນອກ. ສຳລັບການກວດສອບແບບຂະໜານ, ແບ່ງປັນໂທເຄັນການທຳງານກັບພະນັກງານແຕ່ລະຄົນ ແລະ ລໍຖ້າໃຫ້ເຂົາເຈົ້າສຳເລັດກ່ອນເປີດການທຳງານອື່ນ.