WebClient
устарел в пользу HttpClient
, но здесь идет.
Вы должны использовать Progress<T>
, чтобы сообщить о прогрессе.
Вы можете определить метод расширения как :
public static class WebClientExtensions
{
public static async Task<string> DownloadStringTaskAsync(
this WebClient webClient,
string address,
IProgress<int> progress)
{
try
{
webClient.DownloadProgressChanged += downloadProgressChanged;
return await webClient.DownloadStringTaskAsync(address);
}
finally
{
webClient.DownloadProgressChanged -= downloadProgressChanged;
}
void downloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progress.Report(e.ProgressPercentage);
}
}
}
и используйте его так:
private async void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
var text = await new WebClient()
.DownloadStringTaskAsync(
"https://pastebin.pl/view/raw/sample",
new Progress<int>(p => /* report progress */));
var accounts = text.Split('\n');
textBox1.Text = accounts[new Random().Next(0, accounts.Length)];
}
}