小编Pet*_*ger的帖子

为什么Enumerator.MoveNext与using和async-await一起使用时不能正常工作?

我想通过a枚举List<int>并调用异步方法.

如果我这样做:

public async Task NotWorking() {
  var list = new List<int> {1, 2, 3};

  using (var enumerator = list.GetEnumerator()) {
    Trace.WriteLine(enumerator.MoveNext());
    Trace.WriteLine(enumerator.Current);

    await Task.Delay(100);
  }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

True
0
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

True
1
Run Code Online (Sandbox Code Playgroud)

如果我删除usingawait Task.Delay(100):

public void Working1() {
  var list = new List<int> {1, 2, 3};

  using (var enumerator = list.GetEnumerator()) {
    Trace.WriteLine(enumerator.MoveNext());
    Trace.WriteLine(enumerator.Current);
  }
}

public async Task Working2() {
  var list = new List<int> {1, 2, 3};

  var enumerator = list.GetEnumerator(); …
Run Code Online (Sandbox Code Playgroud)

c# ienumerable list async-await

22
推荐指数
1
解决办法
1666
查看次数

标签 统计

async-await ×1

c# ×1

ienumerable ×1

list ×1