Skip to content

イベント・非同期(Events)

イベント変換、非同期処理、カスタムソース生成、およびプロパティ監視に関するファクトリメソッドをまとめています。

← ファクトリメソッド一覧に戻る

API 一覧

イベント変換

API概要
FromEvent.NET イベント(デリゲートベース)を Observable に変換する
FromEventHandlerEventHandler / EventHandler<T> ベースのイベントを Observable に変換する

非同期

API概要
FromAsync非同期ファクトリ関数から Observable を生成する

カスタム生成

API概要
CreateObserver を直接操作してカスタム Observable を生成する
CreateFromIAsyncEnumerable ファクトリから Observable を生成する
Defer購読時に Observable を遅延生成する
rawObserver一部 API の Observer wrapper の有無を切り替える低レベルオプション

プロパティ監視

API概要
EveryValueChangedオブジェクトのプロパティをフレームごとにポーリングして変化を検知する
ObservePropertyChangedINotifyPropertyChanged による変更通知を Observable にする
ObservePropertyChangingINotifyPropertyChanging による変更前通知を Observable にする

使い分けガイド

.NET の標準イベントを Observable にしたい

  • EventHandler / EventHandler<TEventArgs> パターンの場合 → FromEventHandler
  • Action や独自デリゲートの場合 → FromEvent

非同期処理の結果を Observable にしたい

  • ファクトリ関数で遅延実行したい(CancellationToken 付き) → FromAsync
  • 既に開始済みの Task を変換したい → ToObservable

値の発行ロジックを自分で制御したい

  • Observer<T> を直接操作(OnNext / OnCompleted / OnErrorResume) → Create
  • IAsyncEnumerableyield return するほうが自然な場合 → CreateFrom
  • 既存の Observable 生成を購読時まで遅延したい → Defer

プロパティの変化を監視したい

  • INotifyPropertyChanged を実装したオブジェクト → ObservePropertyChanged
  • INotifyPropertyChanging を実装したオブジェクト(変更前の値が必要) → ObservePropertyChanging
  • 任意のオブジェクトのプロパティをポーリングで監視(フレームベース) → EveryValueChanged

ObservePropertyChanged vs EveryValueChanged

観点ObservePropertyChangedEveryValueChanged
検知方式プッシュ型(イベント駆動)プル型(毎フレームポーリング)
必要なインターフェースINotifyPropertyChangedなし(任意のクラス)
ネストしたプロパティ最大 3 階層まで対応非対応(セレクタで手動指定)
パフォーマンスイベント発火時のみ処理毎フレーム比較が発生
主な用途ViewModel / MVVM パターンゲームオブジェクト / 外部ライブラリの監視