<PackageReference Include="Castle.Windsor" Version="5.1.2" />

StartFlag

public class StartFlag : IStartFlagInternal
using Castle.MicroKernel; using Castle.MicroKernel.Context; using System.Collections.Generic; namespace Castle.Facilities.Startable { public class StartFlag : IStartFlagInternal { protected readonly List<IHandler> waitList = new List<IHandler>(); protected StartableFacility.StartableEvents events; public virtual void Signal() { events.StartableComponentRegistered -= CacheHandler; StartAll(); } protected void CacheHandler(IHandler handler) { waitList.Add(handler); } protected virtual void Init() { events.StartableComponentRegistered += CacheHandler; } protected virtual void Start(IHandler handler) { handler.Resolve(CreationContext.CreateEmpty()); } protected void StartAll() { IHandler[] array = waitList.ToArray(); waitList.Clear(); IHandler[] array2 = array; foreach (IHandler handler in array2) { Start(handler); } } void IStartFlagInternal.Init(StartableFacility.StartableEvents events) { this.events = events; Init(); } } }