Dreamine.Hybrid 1.0.3
Dreamine.Hybrid 프로젝트의 API와 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Hybrid.State.HybridStateStore< TState > 클래스 템플릿 참조sealed
Dreamine.Hybrid.State.HybridStateStore< TState >에 대한 상속 다이어그램 :
Dreamine.Hybrid.State.HybridStateStore< TState >에 대한 협력 다이어그램:

클래스

class  StateSubscription

Public 멤버 함수

 HybridStateStore (TState initialState)
IDisposable Subscribe (EventHandler< HybridStateChangedEventArgs< TState > > handler)
void SetState (TState state)
void Update (Func< TState, TState > updater)
 StateSubscription (HybridStateStore< TState > store, EventHandler< HybridStateChangedEventArgs< TState > > handler)
void Dispose ()

속성

TState State [get]

이벤트

EventHandler< HybridStateChangedEventArgs< TState > >? StateChanged
Dreamine.Hybrid.Interfaces.IHybridStateStore< TState >(으)로부터 상속된 이벤트
EventHandler< HybridStateChangedEventArgs< TState > >? StateChanged

Private 멤버 함수

void OnStateChanged (TState state)

Private 속성

readonly object _syncRoot = new()
TState _state
readonly HybridStateStore< TState > _store
EventHandler< HybridStateChangedEventArgs< TState > >? _handler

상세한 설명

하이브리드 애플리케이션을 위한 스레드 안전 인메모리 공유 상태 저장소를 제공합니다.

템플릿 파라메터
TState저장할 상태 형식입니다.

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

멤버 함수 문서화

◆ Dispose()

void Dreamine.Hybrid.State.HybridStateStore< TState >.Dispose ( )
inline

등록된 처리기를 스레드 안전하게 한 번만 제거합니다.

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

303 {
304 // Interlocked.Exchange ensures the handler is cleared and unsubscribed
305 // exactly once even when Dispose is called concurrently.
306 var handler = Interlocked.Exchange(ref _handler, null);
307 if (handler is null)
308 {
309 return;
310 }
311
312 _store.StateChanged -= handler;
313 }

다음을 참조함 : _handler.

◆ HybridStateStore()

Dreamine.Hybrid.State.HybridStateStore< TState >.HybridStateStore ( TState initialState)
inline

지정한 초기 상태로 HybridStateStore<TState>의 새 인스턴스를 초기화합니다.

매개변수
initialState저장소가 처음 보유할 상태입니다.

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

61 {
62 _state = initialState;
63 }

다음을 참조함 : _state.

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

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

◆ OnStateChanged()

void Dreamine.Hybrid.State.HybridStateStore< TState >.OnStateChanged ( TState state)
inlineprivate

지정한 상태 스냅숏을 포함하여 상태 변경 이벤트를 발생시킵니다.

매개변수
state이벤트 구독자에게 전달할 상태입니다.

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

229 {
230 StateChanged?.Invoke(this, new HybridStateChangedEventArgs<TState>(state));
231 }

다음을 참조함 : StateChanged.

다음에 의해서 참조됨 : SetState(), Update().

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

◆ SetState()

void Dreamine.Hybrid.State.HybridStateStore< TState >.SetState ( TState state)
inline

현재 상태를 교체하고 변경 이벤트를 발생시킵니다.

매개변수
state저장할 새 상태입니다.

Dreamine.Hybrid.Interfaces.IHybridStateStore< TState >를 구현.

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

154 {
155 TState snapshot;
156
157 lock (_syncRoot)
158 {
159 _state = state;
160 // Capture the snapshot inside the lock so the event argument always
161 // reflects the stored value at the time of assignment, even when
162 // concurrent SetState calls race. Subscribers receive the state that
163 // was actually committed, not a stale caller-held reference.
164 snapshot = _state;
165 }
166
167 OnStateChanged(snapshot);
168 }

다음을 참조함 : _state, _syncRoot, OnStateChanged().

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

◆ StateSubscription()

Dreamine.Hybrid.State.HybridStateStore< TState >.StateSubscription ( HybridStateStore< TState > store,
EventHandler< HybridStateChangedEventArgs< TState > > handler )
inline

대상 저장소와 처리기로 새 구독 핸들을 초기화합니다.

매개변수
store처리기가 등록된 저장소입니다.
handler해제할 상태 변경 처리기입니다.

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

289 {
290 _store = store;
291 _handler = handler;
292 }

다음을 참조함 : _handler, _store, HybridStateStore().

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

◆ Subscribe()

IDisposable Dreamine.Hybrid.State.HybridStateStore< TState >.Subscribe ( EventHandler< HybridStateChangedEventArgs< TState > > handler)
inline

상태 변경 처리기를 등록하고 해제 가능한 구독을 반환합니다.

매개변수
handler등록할 상태 변경 처리기입니다.
반환값
해제할 때 처리기를 제거하는 구독입니다.
예외
ArgumentNullExceptionhandlernull인 경우 발생합니다.

Dreamine.Hybrid.Interfaces.IHybridStateStore< TState >를 구현.

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

108 {
109 if (handler is null)
110 {
111 throw new ArgumentNullException(nameof(handler));
112 }
113
114 StateChanged += handler;
115 return new StateSubscription(this, handler);
116 }

다음을 참조함 : StateChanged.

◆ Update()

void Dreamine.Hybrid.State.HybridStateStore< TState >.Update ( Func< TState, TState > updater)
inline

변환 함수를 잠금 안에서 실행하여 상태를 원자적으로 갱신하고 변경 이벤트를 발생시킵니다.

매개변수
updater현재 상태를 새 상태로 변환하는 함수입니다.
예외
ArgumentNullExceptionupdaternull인 경우 발생합니다.

Dreamine.Hybrid.Interfaces.IHybridStateStore< TState >를 구현.

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

195 {
196 if (updater is null)
197 {
198 throw new ArgumentNullException(nameof(updater));
199 }
200
201 TState snapshot;
202
203 lock (_syncRoot)
204 {
205 snapshot = updater(_state);
206 _state = snapshot;
207 }
208
209 OnStateChanged(snapshot);
210 }

다음을 참조함 : _state, _syncRoot, OnStateChanged().

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

멤버 데이터 문서화

◆ _handler

EventHandler<HybridStateChangedEventArgs<TState> >? Dreamine.Hybrid.State.HybridStateStore< TState >._handler
private

handler 값을 보관합니다.

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

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

◆ _state

TState Dreamine.Hybrid.State.HybridStateStore< TState >._state
private

state 값을 보관합니다.

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

다음에 의해서 참조됨 : HybridStateStore(), SetState(), Update().

◆ _store

readonly HybridStateStore<TState> Dreamine.Hybrid.State.HybridStateStore< TState >._store
private

store 값을 보관합니다.

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

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

◆ _syncRoot

readonly object Dreamine.Hybrid.State.HybridStateStore< TState >._syncRoot = new()
private

sync Root 값을 보관합니다.

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

다음에 의해서 참조됨 : SetState(), Update().

속성 문서화

◆ State

TState Dreamine.Hybrid.State.HybridStateStore< TState >.State
get

잠금으로 보호된 현재 상태 스냅숏을 가져옵니다.

Dreamine.Hybrid.Interfaces.IHybridStateStore< TState >를 구현.

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

127 {
128 get
129 {
130 lock (_syncRoot)
131 {
132 return _state;
133 }
134 }
135 }

이벤트 문서화

◆ StateChanged

EventHandler<HybridStateChangedEventArgs<TState> >? Dreamine.Hybrid.State.HybridStateStore< TState >.StateChanged

저장된 상태가 변경되었을 때 발생합니다.

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

다음에 의해서 참조됨 : OnStateChanged(), Subscribe().


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