イベント・非同期(Events)
イベント変換、非同期処理、カスタムソース生成、およびプロパティ監視に関するファクトリメソッドをまとめています。
API 一覧
イベント変換
| API | 概要 |
|---|---|
| FromEvent | .NET イベント(デリゲートベース)を Observable に変換する |
| FromEventHandler | EventHandler / EventHandler<T> ベースのイベントを Observable に変換する |
非同期
| API | 概要 |
|---|---|
| FromAsync | 非同期ファクトリ関数から Observable を生成する |
カスタム生成
| API | 概要 |
|---|---|
| Create | Observer を直接操作してカスタム Observable を生成する |
| CreateFrom | IAsyncEnumerable ファクトリから Observable を生成する |
| Defer | 購読時に Observable を遅延生成する |
| rawObserver | 一部 API の Observer wrapper の有無を切り替える低レベルオプション |
プロパティ監視
| API | 概要 |
|---|---|
| EveryValueChanged | オブジェクトのプロパティをフレームごとにポーリングして変化を検知する |
| ObservePropertyChanged | INotifyPropertyChanged による変更通知を Observable にする |
| ObservePropertyChanging | INotifyPropertyChanging による変更前通知を Observable にする |
使い分けガイド
.NET の標準イベントを Observable にしたい
EventHandler/EventHandler<TEventArgs>パターンの場合 → FromEventHandlerActionや独自デリゲートの場合 → FromEvent
非同期処理の結果を Observable にしたい
- ファクトリ関数で遅延実行したい(
CancellationToken付き) → FromAsync - 既に開始済みの
Taskを変換したい → ToObservable
値の発行ロジックを自分で制御したい
Observer<T>を直接操作(OnNext/OnCompleted/OnErrorResume) → CreateIAsyncEnumerableでyield returnするほうが自然な場合 → CreateFrom- 既存の Observable 生成を購読時まで遅延したい → Defer
プロパティの変化を監視したい
INotifyPropertyChangedを実装したオブジェクト → ObservePropertyChangedINotifyPropertyChangingを実装したオブジェクト(変更前の値が必要) → ObservePropertyChanging- 任意のオブジェクトのプロパティをポーリングで監視(フレームベース) → EveryValueChanged
ObservePropertyChanged vs EveryValueChanged
| 観点 | ObservePropertyChanged | EveryValueChanged |
|---|---|---|
| 検知方式 | プッシュ型(イベント駆動) | プル型(毎フレームポーリング) |
| 必要なインターフェース | INotifyPropertyChanged | なし(任意のクラス) |
| ネストしたプロパティ | 最大 3 階層まで対応 | 非対応(セレクタで手動指定) |
| パフォーマンス | イベント発火時のみ処理 | 毎フレーム比較が発生 |
| 主な用途 | ViewModel / MVVM パターン | ゲームオブジェクト / 外部ライブラリの監視 |