例として LoadState メソッドを使用していますが、これは一般的な非同期プログラミングのシナリオと見なすことができます。
LoadState
andメソッドのSaveState
実装には通常、次のシグネチャがあります。
public override void LoadState(..)
public async override void LoadState(..)
一部のデータの読み込みを待機するかどうかに応じて、async キーワードを追加することを選択できます。しかし、戻り値の型がLoadState
isvoid
であるため、LoadState メソッド自体は待機できず、fire and forget としてトリガーされます。これは、データ読み込みロジックで async/await を使用できる一方で、レスポンシブ UI を可能にするため、通常は適切です。
いくつかのシナリオでは、async LoadState メソッドを待ちたいと思います。ただし、署名をTask
void の代わりに変更すると、非同期ロジックを使用しないすべての実装で null を返す必要があります (これは最善の解決策とは思えません)。一部のメソッド呼び出しを待機し、ほとんどのメソッド呼び出しを待機して忘れる (デフォルトとして) 別の解決策はありますか?