ImageProvider クラス
描画に使用する画像の読み込み方法を表し、共有キャッシュのキーを兼ねます。
名前空間: FloatSoda.Core.Providers
アセンブリ: FloatSoda.dll
public abstract record ImageProvider : IEquatable<ImageProvider>実装するインターフェイス
Section titled “実装するインターフェイス”継承したメンバー
Section titled “継承したメンバー”object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()
画像を使う側はResolveAsyncでImageHandleを借り、使い終わったら Disposeで返します。画像そのものはキャッシュが所有し、等しいプロバイダーから 借りたハンドルは同じ画像を共有します。最後のハンドルが返された時点で画像を解放します。
等しいかどうかはrecordの値の等価性で判定します。派生型は、同じ画像を指すインスタンス同士が 等しくなるように、読み込み元を表す値(パスやURLなど)をrecordのメンバーとして持たせてください。
LoadAsync(CancellationToken)
Section titled “LoadAsync(CancellationToken)”画像を読み込みます。
protected abstract ValueTask<SKImage> LoadAsync(CancellationToken cancellationToken)パラメーター
Section titled “パラメーター”cancellationToken CancellationToken
処理のキャンセルを通知するトークン。
読み込んだ画像。所有権はキャッシュへ移ります。
フレームを処理するスレッドから呼び出されます。呼び出しスレッドをブロックせず、 ファイルやネットワークの待ち時間とデコードは非同期に実行してください。 複数の画像の読み込みは並行して進みます。
ResolveAsync(CancellationToken)
Section titled “ResolveAsync(CancellationToken)”このプロバイダーが指す画像を借ります。
public ValueTask<ImageHandle> ResolveAsync(CancellationToken cancellationToken = default)パラメーター
Section titled “パラメーター”cancellationToken CancellationToken
この呼び出しの待機をキャンセルするトークン。他の利用者が残っているあいだは、共有している読み込みを中断しません。 この呼び出しが最後の利用者だった場合は、読み込みにもキャンセルを通知します。
画像を借りているあいだ保持し、使い終わったら破棄するハンドル。
等しいプロバイダーの画像が既に読み込み済みであれば、完了済みのValueTask%601を返します。
読み込みの失敗は返すタスクの状態として通知し、失敗した結果はキャッシュに残しません。