Есть ли простой пример преимуществ асинхронного ожидания в C#?C#

Место общения программистов C#
Ответить
Гость
 Есть ли простой пример преимуществ асинхронного ожидания в C#?

Сообщение Гость »


Сейчас я не могу понять разницу между асинхронным и синхронизирующим выполнением кода в API.
Мне хотелось бы увидеть пример использования асинхронного ожидания в C#, который бы ясно показал мне, почему это хорошо.< /p>
Я попытался создать простой проект консольного приложения, который имитировал бы вызов API.

Код: Выделить всё

using System.Threading.Tasks;

namespace TestAppConsole
{
internal class Program
{
public static async Task Main()
{
var asyncProcessor = new AsyncDataProcessor();
await asyncProcessor.ProcessDataAsync();
}
}
}

Код: Выделить всё

using System;
using System.Threading.Tasks;

namespace TestAppConsole
{
public class AsyncDataProcessor
{
public async Task ProcessDataAsync()
{
var api1Data = await GetDataFromApi1Async();
var api2Data = await GetDataFromApi2Async();

var result = Process(api1Data, api2Data);

Console.WriteLine(result);
}

private async Task GetDataFromApi1Async()
{
// Simulate an asynchronous API call
await Task.Delay(2000);
return "Data from API 1";
}

private async Task GetDataFromApi2Async()
{
// Simulate another asynchronous API call
await Task.Delay(2000);
return "Data from API 2";
}

private string Process(string data1, string data2)
{
// Simulate data processing
return $"Processed: {data1} and {data2}";
}
}
}
I thought that execution would take around 2s, but it still takes 4s, as in sync code.
Explain to me, please, how can I see the difference between async and sync code in WebAPI?
Or what I've done wrong in my example, so it runs sync instead of async?


Источник: https://stackoverflow.com/questions/781 ... await-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»