コンテンツにスキップ

IOTaskRunner クラス

I/Oリソースに関するスレッド所属処理を、専用の単一バックグラウンドスレッドで順番に実行します。

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

public sealed class IOTaskRunner : ITaskRunner, IDisposable

object ← IOTaskRunner

ITaskRunner, IDisposable

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

このランナーはフレーム周期を持ちません。投入された処理があるときだけ専用スレッドを起床し、 FIFO順に1件ずつ実行します。ファイルやネットワークの非同期I/O自体ではなく、 特定スレッドで直列化する必要があるリソース生成やアップロード処理に使用してください。

I/Oタスクランナーを作成します。

public IOTaskRunner(string threadName = "IOThread", ILogger? logger = null)

threadName string

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

logger ILogger?

停止待機のタイムアウトを記録するロガー。記録しない場合は null。

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

public bool IsRunning { get; }

bool

呼び出し元がこのランナーの専用スレッドかどうかを取得します。

public bool RunsTasksOnCurrentThread { get; }

bool

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

public string ThreadName { get; }

string

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()

戻り値を持たない処理を専用スレッドへ投入します。

public Task RunAsync(Action action, CancellationToken cancellationToken = default)

action Action

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

cancellationToken CancellationToken

処理の開始前にキャンセルするためのトークン。

Task

処理の完了、例外、またはキャンセルを表すタスク。

戻り値を持つ処理を専用スレッドへ投入します。

public Task<T> RunAsync<T>(Func<T> function, CancellationToken cancellationToken = default)

function Func<T>

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

cancellationToken CancellationToken

処理の開始前にキャンセルするためのトークン。

Task<T>

処理の結果、例外、またはキャンセルを表すタスク。

T

処理が返す値の型。

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

public void Start(CancellationToken token = default)

token CancellationToken

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

ObjectDisposedException

このインスタンスが破棄済みです。

InvalidOperationException

前回の専用スレッドが待機上限内に終了しませんでした。この状態で開始すると単一スレッドでの 直列実行が保証できないため、開始しません。

新しいタスクの受付を停止し、投入済みの処理を完了してから専用スレッドを終了します。

public void Stop()

専用スレッド自身から呼び出した場合は終了待機を行いません。 投入済みの処理が長引く場合、待機は3秒で打ち切って警告を記録します。