public static ShutdownCallback Shutdown() { ShutdownCallback callback = new ShutdownCallback(); mBootstrap.OnShutdownFinished = callback.OnFinished; mBootstrap.Shutdown(); return(callback); }
public void CallbackOnShutdown(Action<IMessageBusConnection, object> shutdownHandler, object handback) { var adding = new ShutdownCallback[] { new ShutdownCallback(shutdownHandler, handback) }; while (true) { var current = (ShutdownCallback[])Thread.VolatileRead(ref _shutdownCallbacks); var result = current.Union(adding).ToArray(); if (Interlocked.CompareExchange(ref _shutdownCallbacks, result, current) == current) break; } }
/// <summary> /// Adds a new callback to be called when the shutdown request is submitted /// </summary> /// <param name="callback">Callback to perform when a shutdown request is submitted</param> public void RegisterShutdownTask(ShutdownCallback callback) { shutdownCallbacks.Add(callback); }