Асинхронное программирование в C#
НАВИГАЦИЯ ПО СТРАНИЦЕ
Асинхронное программирование в C# предоставляет механизмы для эффективного управления параллельными операциями и предотвращения блокировки основного потока выполнения. Это особенно полезно при работе с операциями ввода/вывода (I/O), сетевыми запросами и другими задачами, которые могут занимать много времени.
Ключевые слова async и await :Ключевое слово async используется для объявления метода как асинхронного.
Оператор await используется для ожидания завершения асинхронной операции.
async Task<string> DownloadDataAsync() { // Асинхронная операция, например, загрузка данных из сети string result = await DownloadFromNetworkAsync(); return result; }
Task и Task\<T\> :Объекты типа Task представляют асинхронную операцию без возвращаемого значения.
Task<T> представляет асинхронную операцию с возвращаемым значением типа T.
Task<int> CalculateAsync() { return Task.Run(() => 42); }
Асинхронные методы в событиях и делегатах:Асинхронные методы могут использоваться в событиях и делегатах, что позволяет обрабатывать асинхронные события.
async void Button_Click(object sender, EventArgs e) { await PerformAsyncOperation(); }
Parallel.ForEach и Parallel.For:Parallel.ForEach и Parallel.For позволяют выполнять итерации по коллекциям или диапазонам индексов параллельно.
Parallel.ForEach(items, item => { ProcessItem(item); });
Cancellation Token :Использование CancellationToken позволяет отменять асинхронные операции, если это необходимо.
async Task<string> DownloadDataAsync(CancellationToken cancellationToken) { // Асинхронная операция с поддержкой отмены string result = await DownloadFromNetworkAsync(cancellationToken); return result; }
Пример кода с использованием асинхронного программирования:
async Task<int> SumAsync()
{
int result = await Task.Run(() =>
{
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
return sum;
});
return result;
}
Этот код демонстрирует асинхронный метод SumAsync, который выполняет асинхронную операцию с использованием “Task.Run” для вычисления суммы чисел от 1 до 100.
Асинхронное программирование в C# обеспечивает эффективное управление параллельными операциями, улучшая отзывчивость приложения и предотвращая блокировку основного потока выполнения.