В синхронном мире C # делает управление всеми одноразовыми вещами действительно довольно простым:
using(IDisposable someDisposable=bla.bla())
{
//do our bidding
}
//don't worry too much about it
Однако, когда мы работаем в асинхронном режиме, мы больше не имеем удобства блока using
.Одна из лучших стратегий, с которыми я столкнулся, - это CCR итератор , который позволяет нам использовать асинхронный код «как если бы он был синхронным».Это означает, что мы можем сохранить наш блок using
в обработчике итератора и не зацикливаться на сложном решении о том, когда удалять и перехватывать все случаи, когда требуется удаление.
Однако во многих случаяхВызов CCR может показаться излишним, и, честно говоря, хотя я не чувствую себя комфортно с CCR, для непосвященных это может выглядеть как двойная нота.
Поэтому мой вопрос: какие существуют другие стратегии для управленияодноразового использования, когда одноразовые предметы должны сохраняться за пределами непосредственного охвата?