PostTaskRunner クラス
一定のフレーム間隔でライフサイクルフックを呼び出す専用バックグラウンドスレッドを管理します。
名前空間: FloatSoda.Engine
アセンブリ: FloatSoda.Engine.dll
public abstract class PostTaskRunner : ITaskRunner実装するインターフェイス
Section titled “実装するインターフェイス”継承したメンバー
Section titled “継承したメンバー”object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
コンストラクター
Section titled “コンストラクター”PostTaskRunner(string, IFramePacer, ILogger?)
Section titled “PostTaskRunner(string, IFramePacer, ILogger?)”一定のフレーム間隔でライフサイクルフックを呼び出す専用バックグラウンドスレッドを管理します。
protected PostTaskRunner(string threadName, IFramePacer pacer, ILogger? logger = null)パラメーター
Section titled “パラメーター”threadName string
専用スレッドに設定する名前。
pacer IFramePacer
各更新の間隔を制御するフレーム待機機構。
logger ILogger?
専用スレッド上の失敗と停止タイムアウトを記録するロガー。記録しない場合は null。
IsRunning
Section titled “IsRunning”専用スレッドが開始済みで、かつ終了していないかどうかを取得します。
public bool IsRunning { get; }プロパティの値
Section titled “プロパティの値”Logger
Section titled “Logger”派生クラスが専用スレッド上の状態や失敗を記録するためのロガーを取得します。
protected ILogger? Logger { get; }プロパティの値
Section titled “プロパティの値”ThreadName
Section titled “ThreadName”専用スレッドに設定される名前を取得します。
public string ThreadName { get; }プロパティの値
Section titled “プロパティの値”DrainPendingTasks()
Section titled “DrainPendingTasks()”キューに積まれたタスクを実行する。1タスクが例外を投げても他のタスクとスレッド自体は継続する。
ここで拾わないと最上位のRunLoopのcatchまで抜けてOnStopが走り、
レンダースレッドが停止して以降すべての描画が止まる。
protected void DrainPendingTasks()OnStart(CancellationToken)
Section titled “OnStart(CancellationToken)”更新ループへ入る前に、専用スレッド上で初期化処理を実行します。
protected virtual void OnStart(CancellationToken ct)パラメーター
Section titled “パラメーター”専用スレッドの停止要求を通知するキャンセルトークン。
スレッドに所属するネイティブリソースは、このメソッドまたは以降のフックで生成してください。
OnStop()
Section titled “OnStop()”更新ループの終了時に、専用スレッド上で終了処理を実行します。
protected virtual void OnStop()OnStart 以降に生成したスレッド所属リソースは、このメソッドで解放してください。
PostTask(Action)
Section titled “PostTask(Action)”専用スレッドで実行する処理をキューへ追加します。
public virtual void PostTask(Action action)パラメーター
Section titled “パラメーター”action Action
専用スレッドで実行する処理。
PostUpdate()
Section titled “PostUpdate()”各更新の直後に、専用スレッド上で後処理を実行します。
protected virtual void PostUpdate()PreUpdate()
Section titled “PreUpdate()”各更新の直前に、専用スレッド上で前処理を実行します。
protected virtual void PreUpdate()Start(CancellationToken)
Section titled “Start(CancellationToken)”専用スレッドを開始します。すでに実行中の場合は新しいスレッドを開始しません。
public void Start(CancellationToken ct)パラメーター
Section titled “パラメーター”Stop()
Section titled “Stop()”専用スレッドへ停止を要求し、呼び出し元がそのスレッド自身でない場合は終了を待機します。
public void Stop()Update()
Section titled “Update()”各フレームの本処理を専用スレッド上で実行します。
protected abstract void Update()