using Microsoft.Practices.ServiceLocation; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Tango.Core.Helpers; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Common.Navigation; using GalaSoft.MvvmLight.Ioc; using System.Reflection; using System.Collections; namespace Tango.MachineStudio.UI.StudioApplication { public class DefaultStudioApplicationManager : IStudioApplicationManager { private INavigationManager _navigationManager; public DefaultStudioApplicationManager(INavigationManager navigationManager) { _navigationManager = navigationManager; } public bool IsShuttingDown { get; private set; } public async void ShutDown() { if (IsShuttingDown) return; IsShuttingDown = true; await Task.Factory.StartNew(async () => { //Do Shutdown Procedures... foreach (var vm in ServiceLocator.Current.GetAllInstancesByBase()) { var result = await vm.OnShutdownRequest(); if (!result) { IsShuttingDown = false; return; } } _navigationManager.NavigateTo(NavigationView.ShutdownView); Thread.Sleep(3000); Environment.Exit(0); }); } } }