コンテンツにスキップ

PostTaskRunner クラス

一定のフレーム間隔でライフサイクルフックを呼び出す専用バックグラウンドスレッドを管理します。

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

public abstract class PostTaskRunner : ITaskRunner

object ← PostTaskRunner

RenderPostTaskRunner

ITaskRunner

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

PostTaskRunner(string, IFramePacer, ILogger?)

Section titled “PostTaskRunner(string, IFramePacer, ILogger?)”

一定のフレーム間隔でライフサイクルフックを呼び出す専用バックグラウンドスレッドを管理します。

protected PostTaskRunner(string threadName, IFramePacer pacer, ILogger? logger = null)

threadName string

専用スレッドに設定する名前。

pacer IFramePacer

各更新の間隔を制御するフレーム待機機構。

logger ILogger?

専用スレッド上の失敗と停止タイムアウトを記録するロガー。記録しない場合は null。

専用スレッドが開始済みで、かつ終了していないかどうかを取得します。

public bool IsRunning { get; }

bool

派生クラスが専用スレッド上の状態や失敗を記録するためのロガーを取得します。

protected ILogger? Logger { get; }

ILogger?

専用スレッドに設定される名前を取得します。

public string ThreadName { get; }

string

キューに積まれたタスクを実行する。1タスクが例外を投げても他のタスクとスレッド自体は継続する。 ここで拾わないと最上位のRunLoopのcatchまで抜けてOnStopが走り、 レンダースレッドが停止して以降すべての描画が止まる。

protected void DrainPendingTasks()

更新ループへ入る前に、専用スレッド上で初期化処理を実行します。

protected virtual void OnStart(CancellationToken ct)

ct CancellationToken

専用スレッドの停止要求を通知するキャンセルトークン。

スレッドに所属するネイティブリソースは、このメソッドまたは以降のフックで生成してください。

更新ループの終了時に、専用スレッド上で終了処理を実行します。

protected virtual void OnStop()

OnStart 以降に生成したスレッド所属リソースは、このメソッドで解放してください。

専用スレッドで実行する処理をキューへ追加します。

public virtual void PostTask(Action action)

action Action

専用スレッドで実行する処理。

各更新の直後に、専用スレッド上で後処理を実行します。

protected virtual void PostUpdate()

各更新の直前に、専用スレッド上で前処理を実行します。

protected virtual void PreUpdate()

専用スレッドを開始します。すでに実行中の場合は新しいスレッドを開始しません。

public void Start(CancellationToken ct)

ct CancellationToken

専用スレッドへ停止を要求し、呼び出し元がそのスレッド自身でない場合は終了を待機します。

public void Stop()

各フレームの本処理を専用スレッド上で実行します。

protected abstract void Update()