예제 #1
0
파일: App.cs 프로젝트: shuimo1008/Smlib
        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;
     }
 }
예제 #3
0
 /// <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);
 }