Await скоро станет умнее


4 2

Сейчас await в C# упрощает работу с асинхронным кодом. Вы просто используете этот оператор с асинхронным методом и ждете потом, когда этот метод вернет значение. Но бывают случаи, когда асинхронный метод передает множество данных. Когда мы загружаем большой файл по сети, его данные поступают постепенно и хочется видеть этот процесс, а не финальный результат. 

В 7-й версии C# это станет возможно. Можно будет писать что-то типа:

foreach await (var something in asyncData) {
}

Этот же оператор можно будет использовать и с Disposable методами. Очень важно освобождать ресурсы, которые явно выделяются и это важно даже в .NET. Если класс открывает базу данных, то он дожен быть вовремя уничтожен и не держать открытым соединение, об этой проблеме я кажется писал уже на блоге и кажется описывал в книге по большим проектам. 

Когда метод вызывается асинхронно, как убедиться, что он уничтожен по окончании работы даже в случае исключительной ситуации? Сейчас красивого метода нет, нужно обрабатывать исключения самому и уничтожать объект, а в 7-ке await можно будет использовать и с using:

using await (здесь создается асинхронный объект с реализацией IDisposable) {
}

Вот это может быть реально круто. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку уже лайкнули 2 человек


Комментарии

Покемон

25 Сентября 2018

В java делаешь try with resources и нет проблем при высвобождение в случае исключений.


Михаил Фленов

25 Сентября 2018

И это работает с потоками?


Покемон

26 Сентября 2018

2Михаил Фленов если поток выкинет исключение типа Interrapted exception то да.

try (final DbConnect connect = new DbConnect()) {
new Thread() {
      connect.action();
  .... throw new RuntimeException();
  }
} catch (Exception) {
}
resource высвободится


Gallemar

26 Сентября 2018

"Await скоро СТНЕТ умнее" - опечатка детектед!


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне