using System; using System.Globalization; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Markup; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using XLAB2.Infrastructure; namespace XLAB2 { public partial class App : Application { private IHost _host; public App() { ApplyRussianCulture(); } protected override async void OnStartup(StartupEventArgs e) { base.OnStartup(e); try { _host = AppHost.Create(); await _host.StartAsync().ConfigureAwait(true); MainWindow = _host.Services.GetRequiredService(); MainWindow.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message, "XLAB2", MessageBoxButton.OK, MessageBoxImage.Error); Shutdown(-1); } } protected override async void OnExit(ExitEventArgs e) { if (_host != null) { try { await _host.StopAsync(TimeSpan.FromSeconds(5)).ConfigureAwait(true); } finally { _host.Dispose(); } } base.OnExit(e); } private static void ApplyRussianCulture() { var culture = new CultureInfo("ru-RU"); CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(culture.IetfLanguageTag))); } } }