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

フレッド_

私が使ってこれを行うことができますusing var

await foreach (var response in _container.GetItemQueryStreamIterator(query))
{
   using var safeResponse = response;
   //use the safeResponse
}

または私はこれを行う必要があります:

await foreach (var response in _container.GetItemQueryStreamIterator(query))
{ 
  try {
    //use response
  } finally {
    response?.Dispose();
  }
}

または、イテレータがでIAsyncDisposableあり、await foreachそれを実行してくれるので、破棄せずにそのまま実行できますか?

await foreach (var response in _container.GetItemQueryStreamIterator(query))
{
   //use the response
}
オラクル

IEnumerable<IDisposable>(その中にあるかどうかにかかわらずAsync与えられて、誰が要素を処分するべきかについての規則はありません。そのため、(そしてうまくいけば)それを列挙してもその要素は破棄されません。

要素を処分することはあなたの責任です。

あなたの質問では、それらを破棄したいので、オプション3は不可能であり、自分で破棄する必要があります。

オプション1と2は同等ですが、どちらも臭いがします。

あなたは書くことができます:

await foreach (var item in enumerable)
{
  await using (item)
  {
    ..          
  }
}

// by playing with your autoformatter
await foreach (var item in enumerable) await using (item)
{
  ..
}

悲しいことに、私はこれ以上の解決策を見ませんでした。そして、同じように見えますあなたがValueTypeにして作業する場合に注意する必要があります。多分私達はこのような何かを求めるべきです:

await foreach(await using var e in c)

もちろん、誰かがすでにそれを求めている編集

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

vuexのアクションオブジェクトでasyncとawaitを使用するにはどうすればよいですか?

分類Dev

Async / Await関数によって返されたPromiseオブジェクトからオブジェクト(または配列)を抽出するにはどうすればよいですか?

分類Dev

オブジェクトを別のオブジェクトにプッシュできません。async/ awaitで動作するようにコードを変更するにはどうすればよいですか?

分類Dev

async awaitを使用して、オブジェクトのarray.lengthで0が取得されないようにする方法は?

分類Dev

ジェネレーター内でawaitを使用するにはどうすればよいですか?

分類Dev

'new Promise'ブロックでasync / awaitを使用してAPIからデータをフェッチするにはどうすればよいですか?

分類Dev

このスーパーエージェント呼び出しでaysnc / awaitを使用するにはどうすればよいですか?

分類Dev

JavascriptのforEachループでasync / await構文を使用するにはどうすればよいですか?

分類Dev

jqueryajaxでasync / awaitを使用するにはどうすればよいですか?

分類Dev

showDialogをawaitで使用するにはどうすればよいですか

分類Dev

「$ .get」でawaitを使用するにはどうすればよいですか?

分類Dev

非同期メソッドでawaitを使用する場合、どうすればTaskオブジェクトにアクセスできますか?

分類Dev

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

分類Dev

「await」リクエストが完了した直後に関数を実行するにはどうすればよいですか?

分類Dev

フェッチされたJSONデータをAsync / awaitを使用してDOMに正しく表示するにはどうすればよいですか?

分類Dev

NestJS async / awaitでミドルウェアを設定するにはどうすればよいですか?

分類Dev

async / awaitを使用して、C#で定義された並列度で多数のタスクを実行するにはどうすればよいですか?

分類Dev

async / awaitを使用して別の関数から要求された本文にアクセスするにはどうすればよいですか?

分類Dev

async await関数を使用してpromiseをobservableに変更するにはどうすればよいですか?

分類Dev

nodejsでcrypto.randomBytesを使用してasync / awaitを使用するにはどうすればよいですか?

分類Dev

Task.Resultなしでawaitを介して非同期メソッドから正確に結果を取得するにはどうすればよいですか?

分類Dev

非同期EF6await db.SaveChangesAsync()が期待どおりに機能したかどうかを確認するにはどうすればよいですか?

分類Dev

asyncとawaitを使用して非同期GUI操作を実現するにはどうすればよいですか?

分類Dev

vue + axiosを使用してgetリクエストでasync / awaitを使用するにはどうすればよいですか?

分類Dev

async / awaitを使用してNodeJSでTCPクライアントを作成するにはどうすればよいですか?

分類Dev

async / awaitを使用してデバウンスするにはどうすればよいですか?

分類Dev

async / awaitを使用してUIスレッドでいくつかのタスクを非同期に実行するにはどうすればよいですか?

分類Dev

Angular 6-await for httpクライアントを使用して、失敗した場合にステータスコードを取得するにはどうすればよいですか?

分類Dev

asyncとawaitを使用して多数の同時Webリクエストを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    vuexのアクションオブジェクトでasyncとawaitを使用するにはどうすればよいですか?

  2. 2

    Async / Await関数によって返されたPromiseオブジェクトからオブジェクト(または配列)を抽出するにはどうすればよいですか?

  3. 3

    オブジェクトを別のオブジェクトにプッシュできません。async/ awaitで動作するようにコードを変更するにはどうすればよいですか?

  4. 4

    async awaitを使用して、オブジェクトのarray.lengthで0が取得されないようにする方法は?

  5. 5

    ジェネレーター内でawaitを使用するにはどうすればよいですか?

  6. 6

    'new Promise'ブロックでasync / awaitを使用してAPIからデータをフェッチするにはどうすればよいですか?

  7. 7

    このスーパーエージェント呼び出しでaysnc / awaitを使用するにはどうすればよいですか?

  8. 8

    JavascriptのforEachループでasync / await構文を使用するにはどうすればよいですか?

  9. 9

    jqueryajaxでasync / awaitを使用するにはどうすればよいですか?

  10. 10

    showDialogをawaitで使用するにはどうすればよいですか

  11. 11

    「$ .get」でawaitを使用するにはどうすればよいですか?

  12. 12

    非同期メソッドでawaitを使用する場合、どうすればTaskオブジェクトにアクセスできますか?

  13. 13

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

  14. 14

    「await」リクエストが完了した直後に関数を実行するにはどうすればよいですか?

  15. 15

    フェッチされたJSONデータをAsync / awaitを使用してDOMに正しく表示するにはどうすればよいですか?

  16. 16

    NestJS async / awaitでミドルウェアを設定するにはどうすればよいですか?

  17. 17

    async / awaitを使用して、C#で定義された並列度で多数のタスクを実行するにはどうすればよいですか?

  18. 18

    async / awaitを使用して別の関数から要求された本文にアクセスするにはどうすればよいですか?

  19. 19

    async await関数を使用してpromiseをobservableに変更するにはどうすればよいですか?

  20. 20

    nodejsでcrypto.randomBytesを使用してasync / awaitを使用するにはどうすればよいですか?

  21. 21

    Task.Resultなしでawaitを介して非同期メソッドから正確に結果を取得するにはどうすればよいですか?

  22. 22

    非同期EF6await db.SaveChangesAsync()が期待どおりに機能したかどうかを確認するにはどうすればよいですか?

  23. 23

    asyncとawaitを使用して非同期GUI操作を実現するにはどうすればよいですか?

  24. 24

    vue + axiosを使用してgetリクエストでasync / awaitを使用するにはどうすればよいですか?

  25. 25

    async / awaitを使用してNodeJSでTCPクライアントを作成するにはどうすればよいですか?

  26. 26

    async / awaitを使用してデバウンスするにはどうすればよいですか?

  27. 27

    async / awaitを使用してUIスレッドでいくつかのタスクを非同期に実行するにはどうすればよいですか?

  28. 28

    Angular 6-await for httpクライアントを使用して、失敗した場合にステータスコードを取得するにはどうすればよいですか?

  29. 29

    asyncとawaitを使用して多数の同時Webリクエストを作成するにはどうすればよいですか?

ホットタグ

アーカイブ