/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Util/Recycle.cs
39 строк
980 B
Chris Patterson
Integration of all external packages into MassTransit, split out into Abstractions, Middleware, and the core MassTransit assembly.
22 янв 2022, 18:24
22 янв 2022, 18:24
b5b4f50
Код
Авторство
О чём код?
namespace MassTransit.Util { using System; using System.Threading; /// <summary> /// Recycles a supervisor once it is stopped, replacing it with a new one /// </summary> /// <typeparam name="T"></typeparam> public class Recycle<T> where T : class, IAgent { Lazy<T> _supervisor; public Recycle(Func<T> supervisorFactory) { CancellationTokenRegistration registration = default; void RecycleSupervisor() { registration.Dispose(); Volatile.Write(ref _supervisor, new Lazy<T>(() => { var supervisor = supervisorFactory(); registration = supervisor.Stopping.Register(() => RecycleSupervisor()); return supervisor; })); } RecycleSupervisor(); } public T Supervisor => Volatile.Read(ref _supervisor).Value; } }