Codemaru 1.0.0.0
QR 코드, 모바일 랜딩 페이지, vCard 연락처 저장과 명함 디자인을 한 화면에서 제공하는 디지털 명함 서비스입니다.
로딩중...
검색중...
일치하는것 없음
App.xaml.cs
이 파일의 문서화 페이지로 가기
4using Dreamine.Hybrid.Wpf.Interfaces;
5using Microsoft.Extensions.DependencyInjection;
6using System.Windows;
7
8namespace Codemaru;
9
18public partial class App : Application, IDreamineServiceProviderAware
19{
28 public static IServiceProvider? ServiceProvider { get; private set; }
29
54 public void SetServiceProvider(IServiceProvider serviceProvider)
55 {
56 ServiceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
57 }
58
83 protected override void OnStartup(StartupEventArgs e)
84 {
85 base.OnStartup(e);
86
87 if (ServiceProvider is null)
88 {
89 throw new InvalidOperationException("ServiceProvider was not initialized before WPF startup.");
90 }
91
92 // InitializeAsync 내부의 await 완료 후 WPF UI SynchronizationContext로 복귀를
93 // 시도하면 UI 스레드가 이미 블로킹 중이므로 데드락이 발생합니다.
94 // Task.Run으로 SynchronizationContext 없는 스레드풀에서 실행해 이를 방지합니다.
95 var session = ServiceProvider.GetRequiredService<CardHybridSession>();
96 Task.Run(() => session.InitializeAsync()).GetAwaiter().GetResult();
97
98 var vm = ServiceProvider.GetRequiredService<MainWindowViewModel>();
99 var window = ServiceProvider.GetRequiredService<MainWindow>();
100 window.DataContext = vm;
101
102 MainWindow = window;
103 window.Show();
104 }
105}
static ? IServiceProvider ServiceProvider
Definition App.xaml.cs:28
void SetServiceProvider(IServiceProvider serviceProvider)
Definition App.xaml.cs:54
override void OnStartup(StartupEventArgs e)
Definition App.xaml.cs:83