Sample01 1.0.0.0
Sample01 사용 방법을 보여 주는 예제 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
Sample01.ViewModels.MainWindowViewModel 클래스 참조sealed

더 자세히 ...

Sample01.ViewModels.MainWindowViewModel에 대한 상속 다이어그램 :
Sample01.ViewModels.MainWindowViewModel에 대한 협력 다이어그램:

Public 멤버 함수

 MainWindowViewModel (IHybridMessageBus bus, IHybridStateStore< CounterState > store)
void Dispose ()

Private 멤버 함수

partial void Click ()
partial void Reset ()
Task OnDashboardActionRequestedAsync (DashboardActionRequestedMessage message, CancellationToken cancellationToken)
Task OnCounterChangedAsync (CounterChangedMessage message, CancellationToken cancellationToken)
void OnClick ()
void OnReset ()
Task PublishCounterChangedAsync (int count)
void ApplyState (CounterState state)
void ThrowIfDisposed ()

정적 Private 멤버 함수

static Task RunOnUiAsync (Action action)

Private 속성

readonly IHybridMessageBus _bus
readonly IHybridStateStore< CounterState_store
readonly? IDisposable _dashboardSub
readonly? IDisposable _counterSub
bool _disposed
string _title = "🌇 저녁시간이 다가옵니다!"
int _clickCount
string _statusMessage = "대기 중..."
ObservableCollection< string > _logs = new()

상세한 설명

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

MainWindowViewModel.cs 파일의 22 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ MainWindowViewModel()

Sample01.ViewModels.MainWindowViewModel.MainWindowViewModel ( IHybridMessageBus bus,
IHybridStateStore< CounterState > store )
inline

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

매개변수
busbus에 사용할 IHybridMessageBus 값입니다.
storestore에 사용할 IHybridStateStore<CounterState> 값입니다.
예외
ArgumentNullException필수 입력 인자 중 하나가 null인 경우 발생합니다.

MainWindowViewModel.cs 파일의 139 번째 라인에서 정의되었습니다.

142 {
143 _bus = bus ?? throw new ArgumentNullException(nameof(bus));
144 _store = store ?? throw new ArgumentNullException(nameof(store));
145
146 ApplyState(_store.State);
147
148 _dashboardSub = _bus.Subscribe<DashboardActionRequestedMessage>(OnDashboardActionRequestedAsync);
149 _counterSub = _bus.Subscribe<CounterChangedMessage>(OnCounterChangedAsync);
150 }

다음을 참조함 : _bus, _counterSub, _dashboardSub, _store, ApplyState(), OnCounterChangedAsync(), OnDashboardActionRequestedAsync().

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

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

멤버 함수 문서화

◆ ApplyState()

void Sample01.ViewModels.MainWindowViewModel.ApplyState ( CounterState state)
inlineprivate

Apply State 작업을 수행합니다.

매개변수
statestate에 사용할 CounterState 값입니다.

MainWindowViewModel.cs 파일의 368 번째 라인에서 정의되었습니다.

369 {
370 ClickCount = state.Count;
371 StatusMessage = $"현재 클릭 수: {ClickCount}";
372 }

다음을 참조함 : Sample01.States.CounterState().

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

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

◆ Click()

partial void Sample01.ViewModels.MainWindowViewModel.Click ( )
private

Click 작업을 수행합니다.

◆ Dispose()

void Sample01.ViewModels.MainWindowViewModel.Dispose ( )
inline

이 인스턴스가 소유한 리소스를 해제합니다.

MainWindowViewModel.cs 파일의 438 번째 라인에서 정의되었습니다.

439 {
440 if (_disposed)
441 {
442 return;
443 }
444
445 _counterSub?.Dispose();
446 _dashboardSub?.Dispose();
447
448 _disposed = true;
449 GC.SuppressFinalize(this);
450 }

다음을 참조함 : _counterSub, _dashboardSub, _disposed.

◆ OnClick()

void Sample01.ViewModels.MainWindowViewModel.OnClick ( )
inlineprivate

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

MainWindowViewModel.cs 파일의 283 번째 라인에서 정의되었습니다.

284 {
285 ThrowIfDisposed();
286
287 ClickCount++;
288 StatusMessage = $"현재 클릭 수: {ClickCount}";
289 Logs.Add($"[{DateTime.Now:HH:mm:ss}] (WPF) 버튼 클릭 {ClickCount}회");
290
291 _store.SetState(new CounterState(
292 Count: ClickCount,
293 LastSource: "WPF → StateStore",
294 LastUpdated: DateTime.Now));
295
296 _ = PublishCounterChangedAsync(ClickCount);
297 }
record CounterState(int Count, string LastSource, DateTime? LastUpdated)

다음을 참조함 : _store, Sample01.States.CounterState(), PublishCounterChangedAsync(), ThrowIfDisposed().

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

◆ OnCounterChangedAsync()

Task Sample01.ViewModels.MainWindowViewModel.OnCounterChangedAsync ( CounterChangedMessage message,
CancellationToken cancellationToken )
inlineprivate

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

매개변수
message처리할 메시지입니다.
cancellationToken취소 요청을 감시하는 토큰입니다.
반환값
On Counter Changed Async 작업에서 생성한 Task 결과입니다.

MainWindowViewModel.cs 파일의 253 번째 라인에서 정의되었습니다.

256 {
257 if (_disposed || cancellationToken.IsCancellationRequested)
258 {
259 return Task.CompletedTask;
260 }
261
262 return RunOnUiAsync(() =>
263 {
264 ClickCount = message.Count;
265 StatusMessage = $"현재 클릭 수: {ClickCount}";
266 Logs.Add($"[{DateTime.Now:HH:mm:ss}] (Blazor) 카운트 변경: {ClickCount}");
267
268 _store.SetState(new CounterState(
269 Count: ClickCount,
270 LastSource: "Blazor → WPF → StateStore",
271 LastUpdated: DateTime.Now));
272 });
273 }

다음을 참조함 : _disposed, _store, Sample01.Messages.CounterChangedMessage.Count, Sample01.States.CounterState(), RunOnUiAsync().

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

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

◆ OnDashboardActionRequestedAsync()

Task Sample01.ViewModels.MainWindowViewModel.OnDashboardActionRequestedAsync ( DashboardActionRequestedMessage message,
CancellationToken cancellationToken )
inlineprivate

Dashboard Action Requested Async 이벤트 또는 상태 변경을 처리합니다.

매개변수
message처리할 메시지입니다.
cancellationToken취소 요청을 감시하는 토큰입니다.
반환값
On Dashboard Action Requested Async 작업에서 생성한 Task 결과입니다.

MainWindowViewModel.cs 파일의 206 번째 라인에서 정의되었습니다.

209 {
210 if (_disposed || cancellationToken.IsCancellationRequested)
211 {
212 return Task.CompletedTask;
213 }
214
215 return RunOnUiAsync(() =>
216 {
217 Logs.Add($"[{DateTime.Now:HH:mm:ss}] Dashboard Action: {message.Action}");
218 });
219 }

다음을 참조함 : _disposed, RunOnUiAsync().

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

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

◆ OnReset()

void Sample01.ViewModels.MainWindowViewModel.OnReset ( )
inlineprivate

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

MainWindowViewModel.cs 파일의 307 번째 라인에서 정의되었습니다.

308 {
309 ThrowIfDisposed();
310
311 ClickCount = 0;
312 StatusMessage = "초기화 완료";
313 Logs.Clear();
314
315 _store.SetState(new CounterState(
316 Count: 0,
317 LastSource: "WPF → StateStore",
318 LastUpdated: DateTime.Now));
319
320 _ = PublishCounterChangedAsync(ClickCount);
321 }

다음을 참조함 : _store, Sample01.States.CounterState(), PublishCounterChangedAsync(), ThrowIfDisposed().

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

◆ PublishCounterChangedAsync()

Task Sample01.ViewModels.MainWindowViewModel.PublishCounterChangedAsync ( int count)
inlineprivate

Publish Counter Changed Async 작업을 수행합니다.

매개변수
countcount에 사용할 int 값입니다.
반환값
Publish Counter Changed Async 작업에서 생성한 Task 결과입니다.

MainWindowViewModel.cs 파일의 347 번째 라인에서 정의되었습니다.

348 {
349 return _bus.PublishAsync(new CounterChangedMessage(count));
350 }

다음을 참조함 : _bus.

다음에 의해서 참조됨 : OnClick(), OnReset().

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

◆ Reset()

partial void Sample01.ViewModels.MainWindowViewModel.Reset ( )
private

Reset 작업을 수행합니다.

◆ RunOnUiAsync()

Task Sample01.ViewModels.MainWindowViewModel.RunOnUiAsync ( Action action)
inlinestaticprivate

Run On Ui Async 작업을 수행합니다.

매개변수
actionaction에 사용할 Action 값입니다.
반환값
Run On Ui Async 작업에서 생성한 Task 결과입니다.
예외
ArgumentNullException필수 입력 인자 중 하나가 null인 경우 발생합니다.

MainWindowViewModel.cs 파일의 406 번째 라인에서 정의되었습니다.

407 {
408 if (action is null)
409 {
410 throw new ArgumentNullException(nameof(action));
411 }
412
413 Application? application = Application.Current;
414
415 if (application?.Dispatcher is null)
416 {
417 action();
418 return Task.CompletedTask;
419 }
420
421 if (application.Dispatcher.CheckAccess())
422 {
423 action();
424 return Task.CompletedTask;
425 }
426
427 return application.Dispatcher.InvokeAsync(action).Task;
428 }

다음에 의해서 참조됨 : OnCounterChangedAsync(), OnDashboardActionRequestedAsync().

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

◆ ThrowIfDisposed()

void Sample01.ViewModels.MainWindowViewModel.ThrowIfDisposed ( )
inlineprivate

Throw If Disposed 작업을 수행합니다.

예외
ObjectDisposedExceptionThrow If Disposed 작업을 완료할 수 없는 경우 ObjectDisposedException이 발생합니다.

MainWindowViewModel.cs 파일의 468 번째 라인에서 정의되었습니다.

469 {
470 if (_disposed)
471 {
472 throw new ObjectDisposedException(nameof(MainWindowViewModel));
473 }
474 }

다음을 참조함 : _disposed, MainWindowViewModel().

다음에 의해서 참조됨 : OnClick(), OnReset().

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

멤버 데이터 문서화

◆ _bus

readonly IHybridMessageBus Sample01.ViewModels.MainWindowViewModel._bus
private

bus 값을 보관합니다.

MainWindowViewModel.cs 파일의 32 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : MainWindowViewModel(), PublishCounterChangedAsync().

◆ _clickCount

int Sample01.ViewModels.MainWindowViewModel._clickCount
private

click Count 값을 보관합니다.

MainWindowViewModel.cs 파일의 87 번째 라인에서 정의되었습니다.

◆ _counterSub

readonly? IDisposable Sample01.ViewModels.MainWindowViewModel._counterSub
private

counter Sub 값을 보관합니다.

MainWindowViewModel.cs 파일의 59 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), MainWindowViewModel().

◆ _dashboardSub

readonly? IDisposable Sample01.ViewModels.MainWindowViewModel._dashboardSub
private

dashboard Sub 값을 보관합니다.

MainWindowViewModel.cs 파일의 50 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), MainWindowViewModel().

◆ _disposed

bool Sample01.ViewModels.MainWindowViewModel._disposed
private

disposed 값을 보관합니다.

MainWindowViewModel.cs 파일의 68 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Dispose(), OnCounterChangedAsync(), OnDashboardActionRequestedAsync(), ThrowIfDisposed().

◆ _logs

ObservableCollection<string> Sample01.ViewModels.MainWindowViewModel._logs = new()
private

logs 값을 보관합니다.

MainWindowViewModel.cs 파일의 105 번째 라인에서 정의되었습니다.

◆ _statusMessage

string Sample01.ViewModels.MainWindowViewModel._statusMessage = "대기 중..."
private

status Message 값을 보관합니다.

MainWindowViewModel.cs 파일의 96 번째 라인에서 정의되었습니다.

◆ _store

readonly IHybridStateStore<CounterState> Sample01.ViewModels.MainWindowViewModel._store
private

store 값을 보관합니다.

MainWindowViewModel.cs 파일의 41 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : MainWindowViewModel(), OnClick(), OnCounterChangedAsync(), OnReset().

◆ _title

string Sample01.ViewModels.MainWindowViewModel._title = "🌇 저녁시간이 다가옵니다!"
private

title 값을 보관합니다.

MainWindowViewModel.cs 파일의 78 번째 라인에서 정의되었습니다.


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