DreamineVMS 1.0.0.0
Windows PC의 RTSP·USB 카메라 영상을 HLS로 변환해 원격 CCTV Viewer에 전달하는 데스크톱 에이전트입니다.
로딩중...
검색중...
일치하는것 없음
DreamineVMS.App 클래스 참조

더 자세히 ...

DreamineVMS.App에 대한 상속 다이어그램 :
DreamineVMS.App에 대한 협력 다이어그램:

Public 멤버 함수

void SetServiceProvider (IServiceProvider serviceProvider)

Protected 멤버 함수

override void OnStartup (StartupEventArgs e)
override void OnExit (ExitEventArgs e)

속성

static ? IServiceProvider ServiceProvider [get, private set]

상세한 설명

DreamineVMS WPF Application 클래스입니다.

App.xaml.cs 파일의 18 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ OnExit()

override void DreamineVMS.App.OnExit ( ExitEventArgs e)
inlineprotected

애플리케이션 종료 시 호출됩니다.

매개변수
e이벤트와 관련된 데이터를 포함합니다.

이전 구현은 UI 스레드에서 StopAllAsync().GetAwaiter().GetResult()로 동기 대기했으나, StopAsync가 내부적으로 RuntimeState 변경 이벤트를 발생시키고 그 핸들러가 Dispatcher.Invoke로 UI 스레드에 마샬링하려고 시도하면서 데드락이 발생했습니다. 현재 구현은 ffmpeg 프로세스 정리를 두 경로에 위임합니다: 1) Host의 정상 종료 흐름에서 FfmpegHlsStreamService.StopAsync가 호출되고 그 안에서 모든 ffmpeg 프로세스가 graceful 종료됩니다. 2) 비정상 종료 시에도 Job Object(KILL_ON_JOB_CLOSE) 덕분에 부모 프로세스가 사라지면 OS가 자동으로 자식 ffmpeg를 종료합니다. 따라서 OnExit에서 추가 동기 대기는 불필요하며, 오히려 데드락의 원인이 됩니다.

App.xaml.cs 파일의 143 번째 라인에서 정의되었습니다.

144 {
145 base.OnExit(e);
146 }

◆ OnStartup()

override void DreamineVMS.App.OnStartup ( StartupEventArgs e)
inlineprotected

Startup 이벤트 또는 상태 변경을 처리합니다.

매개변수
e이벤트와 관련된 데이터를 포함합니다.
예외
InvalidOperationException현재 객체 상태에서 On Startup 작업을 수행할 수 없는 경우 발생합니다.

App.xaml.cs 파일의 83 번째 라인에서 정의되었습니다.

84 {
85 base.OnStartup(e);
86
87 DispatcherUnhandledException += (_, args) =>
88 {
89 System.Windows.MessageBox.Show(
90 args.Exception.ToString(),
91 "오류 발생 — DreamineVMS",
92 System.Windows.MessageBoxButton.OK,
93 System.Windows.MessageBoxImage.Error);
94 args.Handled = true;
95 };
96
97 AppDomain.CurrentDomain.UnhandledException += (_, args) =>
98 {
99 System.Windows.MessageBox.Show(
100 args.ExceptionObject?.ToString() ?? "알 수 없는 오류",
101 "치명적 오류 — DreamineVMS",
102 System.Windows.MessageBoxButton.OK,
103 System.Windows.MessageBoxImage.Error);
104 };
105
106 if (ServiceProvider is null)
107 {
108 throw new InvalidOperationException("ServiceProvider initialization failed.");
109 }
110
111 MainWindowViewModel viewModel = ServiceProvider.GetRequiredService<MainWindowViewModel>();
112 MainWindow window = ServiceProvider.GetRequiredService<MainWindow>();
113 window.DataContext = viewModel;
114
115 MainWindow = window;
116 window.Show();
117 }

다음을 참조함 : ServiceProvider.

◆ SetServiceProvider()

void DreamineVMS.App.SetServiceProvider ( IServiceProvider serviceProvider)
inline

Service Provider 값을 설정합니다.

매개변수
serviceProviderservice Provider에 사용할 IServiceProvider 값입니다.
예외
ArgumentNullException필수 입력 인자 중 하나가 null인 경우 발생합니다.

App.xaml.cs 파일의 54 번째 라인에서 정의되었습니다.

55 {
56 ServiceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
57 }

다음을 참조함 : ServiceProvider.

속성 문서화

◆ ServiceProvider

? IServiceProvider DreamineVMS.App.ServiceProvider
staticgetprivate set

Host에서 주입한 ServiceProvider입니다.

App.xaml.cs 파일의 28 번째 라인에서 정의되었습니다.

28{ get; private set; }

다음에 의해서 참조됨 : DreamineVMS.Views.MainWindow.OnLoaded(), OnStartup(), SetServiceProvider().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: