Start Debugging

タグ: async

33 件 · ページ1/4

2026-10-03 csharpdotnetasync
非 async メソッドでアロケーションなしに ValueTask を同期的に待機する方法
まず IsCompleted を確認し、GetAwaiter().GetResult() で結果を読み取れば、コストは 0 バイトです。ValueTask がまだ保留中の場合に限ってブロックし、その際は呼び出しごとに 72 から 208 バイトを割り当てる AsTask() ではなく、キャッシュしたイベントと UnsafeOnCompleted を使います。.NET 10 と .NET 11 RC1 で計測しました。
.NET MAUI の Android アプリで ANR を引き起こす async void ハンドラーを見つける方法
Play Console は ANR 率が 0.47% を超えたと伝え、libcoreclr.so のフレームだらけのネイティブスタックトレースを渡してきます。その役に立たないトレースから、メインスレッドをブロックした async void イベントハンドラーそのものへたどり着く方法を、Looper の printer、状態マシン名を出す SynchronizationContext ラッパー、dsrouter 経由の dotnet-trace で解説します。
C# のリポジトリメソッドで Task を直接返す vs async/await でパススルーする: どちらを使うべきか
リポジトリのパススルーメソッドで async/await を省略すると約 6 ns と 72 バイトを節約できますが、スタックフレーム、try/catch のセマンティクス、安全なリソース破棄を失います。計測済みのホットパス上の純粋なパススルーでない限り、return await を残してください。
.NET 11 で TimeProvider と FakeTimeProvider を使って時間依存コードをテストする方法
DateTime.UtcNow、Stopwatch、Task.Delay を System.TimeProvider に置き換えて、テストから時計を制御します。依存性注入への登録、FakeTimeProvider.Advance と SetUtcNow、タイムアウトや PeriodicTimer ベースの BackgroundService のテスト、そして Advance と継続処理の落とし穴と xUnit v2 の問題まで解説します。
次へ