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 が勝ります。
2026-05-07 errorscsharpdotnet 修正: A second operation was started on this context instance before a previous operation completed EF Core は同じ DbContext 上で 2 つの await が並行に実行されるとこの例外をスローします。各呼び出しを順次 await するか、IDbContextFactory で並行する作業単位ごとに新しい DbContext を取得してください。
2026-04-25 csharpdotnetdotnet-11 C# で BlockingCollection の代わりに Channels を使う方法 System.Threading.Channels は .NET 11 における BlockingCollection の async ファーストの代替です。本ガイドでは、移行方法、bounded と unbounded の選び方、そしてデッドロックなしでバックプレッシャー、キャンセル、グレースフルシャットダウンを扱う方法を示します。
2026-04-23 csharpdotnetdotnet-11 デッドロックせずに C# の長時間 Task をキャンセルする方法 .NET 11 における CancellationToken、CancelAsync、Task.WaitAsync、リンクトークンを使った協調的キャンセル。そしてクリーンなキャンセルをデッドロックに変えてしまうブロッキングパターン。
2026-04-06 dotnet-11csharpasync .NET 11 Runtime Async がステートマシンを置き換え、よりクリーンなスタックトレースを実現 .NET 11 の Runtime Async は async/await の処理をコンパイラ生成のステートマシンからランタイム自体に移し、読みやすいスタックトレース、正しいブレークポイント、ヒープ割り当ての削減を実現します。