エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
using × Task<T> に潜むバグとその防ぎ方 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
using × Task<T> に潜むバグとその防ぎ方 - Qiita
public async Task<FileStream> GetFileStreamAsync() { ... } async Task AMethodAsync() { // 警告さ... public async Task<FileStream> GetFileStreamAsync() { ... } async Task AMethodAsync() { // 警告されないawait忘れ using var stream = GetFileStreamAsync(); ... } このコードの問題点は、GetFileStreamAsync()の呼び出し時にawaitを付けていないため、FileStreamがDispose()されないことです。代わりにTask<FileStream>がDispose()されてしまいます。 Task<TResult>自体がIDisposableを実装しているために、コンパイラは警告を出せない。このため、このバグは気づかれにくくなります。 このようなリソース解放漏れを引き起こしやすいAPIの採用は、極力避けるべきです。 この投稿では、その回避

