Недавно экспериментировал с асинхронным подключением и ожидал использования C#. Это мой кодНасколько дорого стоит C# Async и ждет
private async void button1_Click(object sender, EventArgs e)
{
textBox1.Text = string.Empty;
var client = new WebClient();
var sw = Stopwatch.StartNew();
var downloadStringTask = client.DownloadStringTaskAsync("http://www.google.com");
textBox1.Text += "Downloading string async "+sw.ElapsedMilliseconds;
sw.Restart();
await downloadStringTask;
textBox1.Text += Environment.NewLine + "Downloaded "+sw.ElapsedMilliseconds;
sw.Stop();
}
и это выход им получить в TextBox1.Text
Downloading string async 5698
Downloaded 666
это означает только Назвав DownloadStringTaskAsync()
принимает вокруг 5.6 Seconds
для выполнения, где, как фактическая загрузка принимает <1 second
. Когда причина, по которой этот метод должен использоваться, заключается в том, чтобы сохранить ресурсы Thread.
Если это правда, существует ли какой-либо фактический случай, когда этот метод класса WebClient должен использоваться? Или им просто думать в совершенно неправильных терминах?
Hm, измерение только один раз может привести к вводящим в заблуждение цифрам – Patrick
@Patrick я был готов использовать это позже в своем веб-приложении, в котором контроллер создается каждый раз –
Это не просто время, затрачиваемое на загрузку данных, но и время в разрешении dns и времени, необходимого для загрузки в первый раз. Я предлагаю вам попробовать сделать еще один звонок. Это даст другой результат, так как на этот раз dns уже разрешен и кэширован, а также страница кэшируется. –