2026-06-22 flutterdartasync Flutter で await の後に BuildContext を安全に使う方法 await の前に context から必要なものを取得し、再開時に if (context.mounted) return で保護します。完全なパターン、それを強制する linter ルール、そしてそれが見逃すエッジケースを解説します。
2026-06-20 csharpdotnetasync ValueTask<T> とは何か、そしていつ使う価値があるのか ValueTask と ValueTask<T> は、同期的に完了する場合に Task をヒープ割り当てせずに非同期メソッドが結果を返せるようにする構造体です。利点は、待機せずに完了することが多いホットパスで割り当てが 1 つ減ることです。代償は厳格な await-once 契約です。この型が実際に何であるか、どう動作するか、そしてその価値を発揮する狭い範囲のケースを解説します。
2026-06-19 csharpdotnetdotnet-11 IAsyncEnumerable<T> とは何か、いつ使うべきか IAsyncEnumerable<T> は非同期ストリームのためのインターフェースです。要素が時間とともに到着し、それぞれの生成に await が必要になり得るシーケンスです。それが実際に何であるか、await foreach と yield がどう駆動するか、そして Task<List<T>> ではなくこれを選ぶ基準を解説します。
2026-06-06 migrationcsharpdotnet ValueTask<T> から Task<T> へ戻す移行: いつ、なぜ (.NET 11, C# 14) ValueTask および ValueTask<T> の戻り値型を Task と Task<T> に戻すための実践的なチェックリスト。呼び出し側で何が壊れるか、各変更をどう検証するか、その入れ替えに価値があったかをどう見極めるか。
2026-06-02 errorscsharpdotnet 解決: ObjectDisposedException: Cannot access a disposed context instance fire-and-forget タスクが、DI スコープがすでに破棄したリクエストスコープの DbContext をキャプチャしました。IServiceScopeFactory または IDbContextFactory でタスク内に新しいコンテキストを解決してください。
2026-05-31 csharpdotnetdotnet-11 ASP.NET Core で BackgroundService を使って fire-and-forget の処理を安全に実行する方法 コントローラーから Task.Run を呼ぶと、シャットダウン時に処理が失われ、例外が握りつぶされ、すでに破棄された scoped サービスを参照してしまいます。安全なパターンは、BackgroundService が排出する境界付き Channel キューであり、作業項目ごとに新しい scope を開き、StopAsync で実行中の処理を完了させます。
2026-05-25 comparisoncsharpdotnet C# における Parallel.ForEach vs Parallel.ForEachAsync vs Task.WhenAll メモリ上のデータに対する CPU バウンドな処理には Parallel.ForEach を、多数の要素に対する非同期 I/O を並行数の上限付きで行うには Parallel.ForEachAsync を、すべての操作を一度に開始して結果が必要な小さく固定的なファンアウトには Task.WhenAll を使います。
2026-05-21 comparisoncsharpasync .NET 11 における ConfigureAwait(false) とデフォルトの比較: 今でも重要か? ConfigureAwait(false) は、SynchronizationContext (WinForms、WPF、MAUI) 下で動作する可能性のあるライブラリコードでは依然として必須です。.NET 11 上の ASP.NET Core、コンソールアプリ、Worker サービスのアプリケーションコードでは no-op です。
2026-05-21 comparisoncsharplinq C# における IEnumerable vs IAsyncEnumerable vs IQueryable:メソッドは何を返すべきか 3 つのシーケンスインターフェース、3 つの実行モデル。データベースがクエリを変換できる場合は IQueryable を、プロデューサーが非同期でストリーミングしたい場合は IAsyncEnumerable を、それ以外のメモリ内のものには IEnumerable を使用します。
2026-05-20 comparisoncsharpasync C# における async void と async Task: それぞれが正しい場面 async Task がデフォルトで、async void は例外です。async void は、イベントハンドラー、メッセージループのトップレベルハンドラー、そして void シグネチャを要求する一部のフレームワークコールバックに限って使用してください。それ以外のすべてでは、例外処理、コンポーザビリティ、テスタビリティの観点から async Task が勝ります。