WeddingPlatform.Web 1.0.0.0
지도, 갤러리, 방명록, 계좌 안내와 배경음악을 링크 하나에 담는 무료 모바일 청첩장 서비스입니다.
로딩중...
검색중...
일치하는것 없음
WeddingPlatform.Views.MainWindow 클래스 참조

더 자세히 ...

WeddingPlatform.Views.MainWindow에 대한 상속 다이어그램 :
WeddingPlatform.Views.MainWindow에 대한 협력 다이어그램:

Public 멤버 함수

 MainWindow (DreamineBlazorServerHostOptions serverOptions)

Private 멤버 함수

async void OnLoaded (object sender, RoutedEventArgs e)
async Task OpenExternalAdminAsync (string baseUrl, string expectedInstanceId, string path="/admin", int timeoutMs=15000, int intervalMs=500)
void ShowExternalBrowserMessage (string targetUrl, string message)

정적 Private 멤버 함수

static async Task NavigateAsync (WebView2 webView, string baseUrl, string expectedInstanceId, string path="/admin", int timeoutMs=15000, int intervalMs=500)
static async Task< bool > WaitForInstanceAsync (string baseUrl, string expectedInstanceId, int timeoutMs, int intervalMs)
static void OpenUrl (string url)
static void ShowStartupError (Exception ex)

Private 속성

readonly DreamineBlazorServerHostOptions _serverOptions

상세한 설명

Main Window 기능과 관련 상태를 캡슐화합니다.

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

생성자 & 소멸자 문서화

◆ MainWindow()

WeddingPlatform.Views.MainWindow.MainWindow ( DreamineBlazorServerHostOptions serverOptions)
inline

지정한 설정으로 MainWindow 클래스의 새 인스턴스를 초기화합니다.

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

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

58 {
59 _serverOptions = serverOptions ?? throw new ArgumentNullException(nameof(serverOptions));
60 InitializeComponent();
61
62 if (DesignerProperties.GetIsInDesignMode(this)) return;
63
64 Loaded += OnLoaded;
65 Closed += (_, _) => Application.Current?.Shutdown();
66 }

다음을 참조함 : _serverOptions, OnLoaded().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ NavigateAsync()

async Task WeddingPlatform.Views.MainWindow.NavigateAsync ( WebView2 webView,
string baseUrl,
string expectedInstanceId,
string path = "/admin",
int timeoutMs = 15000,
int intervalMs = 500 )
inlinestaticprivate

Navigate Async 작업을 수행합니다.

매개변수
webViewweb View에 사용할 WebView2 값입니다.
baseUrlbase Url에 사용할 string 값입니다.
expectedInstanceIdexpected Instance Id에 사용할 string 값입니다.
pathpath에 사용할 string 값입니다.
timeoutMstimeout Ms에 사용할 int 값입니다.
intervalMsinterval Ms에 사용할 int 값입니다.
반환값
Navigate Async 작업에서 생성한 Task 결과입니다.

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

251 {
252 var targetUrl = $"{baseUrl}{path}";
253 try
254 {
255 if (!await WaitForInstanceAsync(baseUrl, expectedInstanceId, timeoutMs, intervalMs))
256 {
257 await HybridWebViewHost.ShowOfflineMessageAsync(webView, targetUrl);
258 return;
259 }
260
261 webView.Source = new Uri(targetUrl);
262 }
263 catch (TaskCanceledException) { }
264 catch (COMException ex)
265 {
266 ShowStartupError(ex);
267 }
268 catch (InvalidOperationException ex)
269 {
270 ShowStartupError(ex);
271 }
272 }

다음을 참조함 : ShowStartupError(), WaitForInstanceAsync().

다음에 의해서 참조됨 : OnLoaded().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnLoaded()

async void WeddingPlatform.Views.MainWindow.OnLoaded ( object sender,
RoutedEventArgs e )
inlineprivate

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

매개변수
sender이벤트를 발생시킨 객체입니다.
e이벤트와 관련된 데이터를 포함합니다.

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

93 {
94 try
95 {
96 var baseUrl = $"http://127.0.0.1:{_serverOptions.Port}";
97 if (!_serverOptions.UseEmbeddedWebView)
98 {
99 await OpenExternalAdminAsync(baseUrl, _serverOptions.InstanceId, "/admin");
100 return;
101 }
102
103 var webView = HybridWebViewHost.CreateWebView();
104 WebViewHost.Child = webView;
105
106 await NavigateAsync(webView, baseUrl, _serverOptions.InstanceId, "/admin");
107 }
108 catch (Exception ex)
109 {
110 ShowStartupError(ex);
111 }
112 }

다음을 참조함 : _serverOptions, NavigateAsync(), OpenExternalAdminAsync(), ShowStartupError().

다음에 의해서 참조됨 : MainWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OpenExternalAdminAsync()

async Task WeddingPlatform.Views.MainWindow.OpenExternalAdminAsync ( string baseUrl,
string expectedInstanceId,
string path = "/admin",
int timeoutMs = 15000,
int intervalMs = 500 )
inlineprivate

Open External Admin Async 작업을 수행합니다.

매개변수
baseUrlbase Url에 사용할 string 값입니다.
expectedInstanceIdexpected Instance Id에 사용할 string 값입니다.
pathpath에 사용할 string 값입니다.
timeoutMstimeout Ms에 사용할 int 값입니다.
intervalMsinterval Ms에 사용할 int 값입니다.
반환값
Open External Admin Async 작업에서 생성한 Task 결과입니다.

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

172 {
173 var targetUrl = $"{baseUrl}{path}";
174 var alive = await WaitForInstanceAsync(baseUrl, expectedInstanceId, timeoutMs, intervalMs);
175 if (!alive)
176 {
177 ShowExternalBrowserMessage(targetUrl, "관리자 서버를 아직 확인하지 못했습니다.");
178 return;
179 }
180
181 OpenUrl(targetUrl);
182 ShowExternalBrowserMessage(targetUrl, "관리자 화면을 기본 브라우저에서 열었습니다.");
183 }

다음을 참조함 : OpenUrl(), ShowExternalBrowserMessage(), WaitForInstanceAsync().

다음에 의해서 참조됨 : OnLoaded().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OpenUrl()

void WeddingPlatform.Views.MainWindow.OpenUrl ( string url)
inlinestaticprivate

Open Url 작업을 수행합니다.

매개변수
urlurl에 사용할 string 값입니다.

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

430 {
431 Process.Start(new ProcessStartInfo(url)
432 {
433 UseShellExecute = true
434 });
435 }

다음에 의해서 참조됨 : OpenExternalAdminAsync(), ShowExternalBrowserMessage().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ShowExternalBrowserMessage()

void WeddingPlatform.Views.MainWindow.ShowExternalBrowserMessage ( string targetUrl,
string message )
inlineprivate

Show External Browser Message 작업을 수행합니다.

매개변수
targetUrltarget Url에 사용할 string 값입니다.
message처리할 메시지입니다.

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

375 {
376 var panel = new StackPanel
377 {
378 Margin = new Thickness(32),
379 VerticalAlignment = VerticalAlignment.Center,
380 HorizontalAlignment = HorizontalAlignment.Center,
381 MaxWidth = 520
382 };
383
384 panel.Children.Add(new TextBlock
385 {
386 Text = message,
387 FontSize = 22,
388 FontWeight = FontWeights.Bold,
389 TextAlignment = TextAlignment.Center,
390 Margin = new Thickness(0, 0, 0, 12)
391 });
392 panel.Children.Add(new TextBlock
393 {
394 Text = targetUrl,
395 FontSize = 14,
396 TextAlignment = TextAlignment.Center,
397 TextWrapping = TextWrapping.Wrap,
398 Margin = new Thickness(0, 0, 0, 20)
399 });
400
401 var button = new Button
402 {
403 Content = "관리자 화면 다시 열기",
404 Padding = new Thickness(18, 8, 18, 8),
405 HorizontalAlignment = HorizontalAlignment.Center
406 };
407 button.Click += (_, _) => OpenUrl(targetUrl);
408 panel.Children.Add(button);
409
410 WebViewHost.Child = panel;
411 }

다음을 참조함 : OpenUrl().

다음에 의해서 참조됨 : OpenExternalAdminAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ShowStartupError()

void WeddingPlatform.Views.MainWindow.ShowStartupError ( Exception ex)
inlinestaticprivate

Show Startup Error 작업을 수행합니다.

매개변수
exex에 사용할 Exception 값입니다.

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

454 {
455 Debug.WriteLine($"[WeddingPlatform.WebView2.StartupFailed] {ex}");
456 MessageBox.Show(
457 $"관리자 화면(WebView2)을 초기화하지 못했습니다.\n\n{ex.Message}",
458 "Wedding Platform",
459 MessageBoxButton.OK,
460 MessageBoxImage.Error);
461 }

다음에 의해서 참조됨 : NavigateAsync(), OnLoaded().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ WaitForInstanceAsync()

async Task< bool > WeddingPlatform.Views.MainWindow.WaitForInstanceAsync ( string baseUrl,
string expectedInstanceId,
int timeoutMs,
int intervalMs )
inlinestaticprivate

Wait For Instance Async 작업을 수행합니다.

매개변수
baseUrlbase Url에 사용할 string 값입니다.
expectedInstanceIdexpected Instance Id에 사용할 string 값입니다.
timeoutMstimeout Ms에 사용할 int 값입니다.
intervalMsinterval Ms에 사용할 int 값입니다.
반환값
Wait For Instance Async 작업에서 생성한 Task<bool> 결과입니다.

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

324 {
325 var instanceUrl = $"{baseUrl}/_dreamine/instance";
326 await Task.Delay(1200);
327
328 using var cts = new CancellationTokenSource(timeoutMs);
329 using var http = new HttpClient();
330
331 while (!cts.IsCancellationRequested)
332 {
333 try
334 {
335 var id = await http.GetStringAsync(instanceUrl, cts.Token);
336 if (string.Equals(id.Trim(), expectedInstanceId, StringComparison.Ordinal))
337 {
338 return true;
339 }
340 }
341 catch (HttpRequestException) { }
342 catch (TaskCanceledException) { }
343
344 await Task.Delay(intervalMs, cts.Token);
345 }
346
347 return false;
348 }

다음에 의해서 참조됨 : NavigateAsync(), OpenExternalAdminAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _serverOptions

readonly DreamineBlazorServerHostOptions WeddingPlatform.Views.MainWindow._serverOptions
private

server Options 값을 보관합니다.

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

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


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