コンテンツにスキップ

BuildOwner クラス

1つのElementツリーについて、再構築が必要なElementの予約と実行順序を管理します。

名前空間: FloatSoda.Elements
アセンブリ: FloatSoda.dll

public class BuildOwner

object ← BuildOwner

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

指定したコールバックで再構築の予約を通知するBuildOwnerを生成します。

public BuildOwner(Action onBuildScheduled)

onBuildScheduled Action

再構築またはメインスレッドタスクの処理が必要になったときに呼び出す処理。

onBuildScheduledは任意のスレッドから呼び出されます。 ScheduledBuildFor経由ではElementツリーを処理するスレッドから呼ばれますが、 TaskSchedulerへ投入されたTaskが完了した場合はその完了スレッド (I/Oスレッドやスレッドプール)から呼ばれます。 このため、コールバックはスレッドセーフな通知(フラグを立てる、フレームを予約するなど)に限り、 ElementツリーやRenderObjectツリーへ直接触れてはいけません。 ツリーの操作は必ずBuildScopeを実行するスレッドで行ってください。

このツリーが属するウィンドウのフレームスケジューラ(通常はWidgetBinding)。 TickerがElement.Owner経由で自ウィンドウのフレームコールバックへ到達するために使います。

public IFrameScheduler? FrameScheduler { get; init; }

IFrameScheduler?

このツリーが属するウィンドウのジェスチャ調停基盤(通常はWidgetBinding)。 GestureDetectorがElement.Owner経由で共有のアリーナ/ルータへ到達するために使います。

public IGestureBinding? GestureBinding { get; init; }

IGestureBinding?

任意の処理を実行した後、予約されたElementを親に近い順で再構築します。

public void BuildScope(Action? callback = null)

callback Action?

再構築待ちリストを処理する前に実行する処理。追加処理が不要な場合はnull。

処理中に新たな再構築が予約された場合も順序を再評価して同じスコープ内で処理します。 完了後は、処理したElementの待ちリスト登録状態を解除します。

指定したElementを次のビルドスコープで再構築する対象として登録します。

public void ScheduledBuildFor(Element element)

element Element

再構築が必要なElement。

Elementがまだ待ちリストにない場合だけ追加します。 最初のElementを追加すると、コンストラクターで指定されたビルド予約処理を呼び出します。