タスクで作成したオブジェクトを破棄するにはどうすればよいですか?

マイケル・ハガー

次のような複数のタスクを作成するforeachループがあります。

[編集:CreateDisposableAsyncはタスクを返します[IDisposable]]

foreach(...)
{
   tasks.Add(CreateDisposableAsync());
}

その後、私はこれらすべてのタスクを待ち、例外をキャッチします。

try
{
   await Task.WhenAll(tasks);
}
catch (AggregateException)
{
   // handle exceptions
}

しかし、CreateDisposableAsync()を呼び出すと、IDisposableが返されます。これは、いずれかのタスクで例外が発生したかどうかに関係なく、破棄したいと思います。これどうやってするの?

[編集:CreateDisposableAsync()関数は、それ自体が例外をスローした場合、作成されたオブジェクトを破棄していたことが判明したため、元のコードに問題はありませんでした。]

イゴール

コメントから

Q:結果を破棄することを除いて、呼び出し元のコードの結果で他のことをしますか(またはしたいですか)

A:いいえ、しません

これを行う最も簡単な方法は、CreateDisposableAsyncメソッドが戻る前に自身のリソースをクリーンアップして、のTask代わりに返すことですTask<IDisposable>OPに表示されている既存の呼び出しコードを変更する必要はありません。

// change the signature
async Task CreateDisposableAsync(){
   // use using blocks for anything that needs to be disposed
   // try/finally is also acceptable
   using(var someDisposableInstance = new SomethingDisposable()){
      // implementation
   }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

画面を離れたオブジェクトを破棄するにはどうすればよいですか?

分類Dev

スライダーを使用してオブジェクトを作成および破棄するにはどうすればよいですか?

分類Dev

Zend:PHP 7でカスタムオブジェクトを正しく破棄するにはどうすればよいですか?

分類Dev

Python / PySide:終了したスレッドオブジェクトを破棄するにはどうすればよいですか?

分類Dev

Railsでオブジェクトをフィルタリングして、オブジェクトを作成したユーザーまたは管理者だけがそのオブジェクトを破棄できるようにするにはどうすればよいですか?

分類Dev

await foreachで取得したIAsyncDisposableオブジェクトを安全に破棄するにはどうすればよいですか?

分類Dev

Typescriptで、オブジェクトが破棄されたかどうかを確認するにはどうすればよいですか?

分類Dev

Restパターンを使用してオブジェクトの目的の部分のみを破棄するにはどうすればよいですか?

分類Dev

QMLで同じイベントの後に動的オブジェクトを作成/破棄するにはどうすればよいですか?

分類Dev

C#の静的クラスからアンマネージドオブジェクトを破棄するにはどうすればよいですか?

分類Dev

コンストラクターが完了した直後にQWindowオブジェクトから派生したものを破棄するにはどうすればよいですか?

分類Dev

既存のフォーメーションに新しいオブジェクトを追加/破棄するにはどうすればよいですか?

分類Dev

リスト内のオブジェクトを自動的に破棄するにはどうすればよいですか?

分類Dev

新しいオブジェクトを作成する前に、すべての子オブジェクトを破棄するにはどうすればよいですか?

分類Dev

リクエストの完了直後にUnityDIによって作成されたオブジェクトを破棄するにはどうすればよいですか?

分類Dev

継承されたウィジェットを使用するときにブロックを破棄するにはどうすればよいですか?

分類Dev

不完全なオブジェクトタイプへのスマートポインタを使用してクラスを安全に破棄するにはどうすればよいですか?

分類Dev

ネストされたホバーイベントでJavaScriptタイマーオブジェクトを適切に破棄するにはどうすればよいですか?

分類Dev

JavaでStringオブジェクトを確実に破棄するにはどうすればよいですか?

分類Dev

破棄されたオブジェクトにアクセスできません。しかし、私はオブジェクトを作成したばかりで、コードの次の行でデータベースに保存しようとしています

分類Dev

編集モード(Unity3d)で子オブジェクトを破棄するにはどうすればよいですか?

分類Dev

インスタンス化されたゲームオブジェクトのクローンを破棄するにはどうすればよいですか?

分類Dev

別のスレッドがDelphiでオブジェクトを使用できる間に、オブジェクトをスレッド内で安全に破棄するにはどうすればよいですか?

分類Dev

Firebase を介してデータ サービス クラスで作成したオブジェクトを返すにはどうすればよいですか?

分類Dev

複数のゲームオブジェクトを一度に破棄するにはどうすればよいですか?

分類Dev

lodashマップがネストされたオブジェクトを作成しないようにするにはどうすればよいですか?

分類Dev

静的メソッドのオブジェクトの破棄エラーを修正するにはどうすればよいですか?

分類Dev

クラスのオブジェクトを動的に作成するにはどうすればよいですか?

分類Dev

条件付きでオブジェクトを破壊するにはどうすればよいですか?

Related 関連記事

  1. 1

    画面を離れたオブジェクトを破棄するにはどうすればよいですか?

  2. 2

    スライダーを使用してオブジェクトを作成および破棄するにはどうすればよいですか?

  3. 3

    Zend:PHP 7でカスタムオブジェクトを正しく破棄するにはどうすればよいですか?

  4. 4

    Python / PySide:終了したスレッドオブジェクトを破棄するにはどうすればよいですか?

  5. 5

    Railsでオブジェクトをフィルタリングして、オブジェクトを作成したユーザーまたは管理者だけがそのオブジェクトを破棄できるようにするにはどうすればよいですか?

  6. 6

    await foreachで取得したIAsyncDisposableオブジェクトを安全に破棄するにはどうすればよいですか?

  7. 7

    Typescriptで、オブジェクトが破棄されたかどうかを確認するにはどうすればよいですか?

  8. 8

    Restパターンを使用してオブジェクトの目的の部分のみを破棄するにはどうすればよいですか?

  9. 9

    QMLで同じイベントの後に動的オブジェクトを作成/破棄するにはどうすればよいですか?

  10. 10

    C#の静的クラスからアンマネージドオブジェクトを破棄するにはどうすればよいですか?

  11. 11

    コンストラクターが完了した直後にQWindowオブジェクトから派生したものを破棄するにはどうすればよいですか?

  12. 12

    既存のフォーメーションに新しいオブジェクトを追加/破棄するにはどうすればよいですか?

  13. 13

    リスト内のオブジェクトを自動的に破棄するにはどうすればよいですか?

  14. 14

    新しいオブジェクトを作成する前に、すべての子オブジェクトを破棄するにはどうすればよいですか?

  15. 15

    リクエストの完了直後にUnityDIによって作成されたオブジェクトを破棄するにはどうすればよいですか?

  16. 16

    継承されたウィジェットを使用するときにブロックを破棄するにはどうすればよいですか?

  17. 17

    不完全なオブジェクトタイプへのスマートポインタを使用してクラスを安全に破棄するにはどうすればよいですか?

  18. 18

    ネストされたホバーイベントでJavaScriptタイマーオブジェクトを適切に破棄するにはどうすればよいですか?

  19. 19

    JavaでStringオブジェクトを確実に破棄するにはどうすればよいですか?

  20. 20

    破棄されたオブジェクトにアクセスできません。しかし、私はオブジェクトを作成したばかりで、コードの次の行でデータベースに保存しようとしています

  21. 21

    編集モード(Unity3d)で子オブジェクトを破棄するにはどうすればよいですか?

  22. 22

    インスタンス化されたゲームオブジェクトのクローンを破棄するにはどうすればよいですか?

  23. 23

    別のスレッドがDelphiでオブジェクトを使用できる間に、オブジェクトをスレッド内で安全に破棄するにはどうすればよいですか?

  24. 24

    Firebase を介してデータ サービス クラスで作成したオブジェクトを返すにはどうすればよいですか?

  25. 25

    複数のゲームオブジェクトを一度に破棄するにはどうすればよいですか?

  26. 26

    lodashマップがネストされたオブジェクトを作成しないようにするにはどうすればよいですか?

  27. 27

    静的メソッドのオブジェクトの破棄エラーを修正するにはどうすればよいですか?

  28. 28

    クラスのオブジェクトを動的に作成するにはどうすればよいですか?

  29. 29

    条件付きでオブジェクトを破壊するにはどうすればよいですか?

ホットタグ

アーカイブ