បោះបង់ការរត់ត្រួតពិនិត្យប្រូកស៊ី 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 ជាកម្មសិទ្ធិរបស់អ្នកត្រួតពិនិត្យដែលមានស្រាប់។ រក្សាដែនកំណត់ទំហំឆ្លើយតបសមស្រប និងពេលវេលាកំណត់សម្រាប់ចំណុចបញ្ចប់នេះ។ អ្នកត្រួតពិនិត្យផលិតកម្មអាចប្រើអតិថិជនឡើងវិញតាមផ្លូវ; បំណែកបង្ហាញកន្លែងដែលការបោះបង់ធ្វើដំណើរ មិនមែនការរចនាអាងតភ្ជាប់ទេ។
ប្រសិនបើប្រូកស៊ីដែលបរាជ័យត្រូវកត់ត្រា និងរំលង ចាប់ការបរាជ័យបណ្តាញដែលរំពឹងទុកជុំវិញការត្រួតពិនិត្យនីមួយៗ។ ទុកឱ្យការបោះបង់នៃការរត់គេចទៅអ្នកគ្រប់គ្រងខាងក្រៅ។ សម្រាប់ការត្រួតពិនិត្យស្របគ្នា ចែករំលែកតូកេនរត់ជាមួយកម្មករនីមួយៗ ហើយរង់ចាំការបញ្ចប់របស់ពួកគេមុនពេលបើកការរត់ផ្សេងទៀត។