12得票5回答
如何实现一个高效的 WhenEach,它可以流式处理一个返回任务结果的 IAsyncEnumerable?

我正在尝试使用C# 8提供的新工具更新我的工具集,其中似乎特别有用的一种方法是Task.WhenAll的版本,它返回一个IAsyncEnumerable。该方法应在任务结果可用时立即流式传输,因此将其命名为WhenAll并不太合适。WhenEach听起来更合适。该方法的签名为: public...

10得票1回答
如何在async foreach和IAsyncEnumerable中返回ActionResult

我有一个这样签名的控制器方法: public async IAsyncEnumerable<MyDto> Get() 它运行良好,但我需要进行一些请求验证,并相应地返回401、400和其他代码,但它不支持这样做。 或者,以下签名无法编译: public async Task...

9得票2回答
我应该在Web API Controller中使用 IAsyncEnumerable<T> 替代 Task<ActionResult<IEnumerable<T>>> 吗(或者说可以吗)?

我目前有一个Web API,该API从存储库中使用FromSqlRaw(...).ToListAsync()获取一行数据,然后将该数据作为Task&lt;ActionResult&lt;IEnumerable&lt;MyClass&gt;&gt;&gt;类型的Ok(data.ToArray()...

9得票4回答
如何使用C#8中的IAsyncEnumerable<T>来异步枚举并行运行的任务

如果可能的话,我想为并行启动的任务创建一个异步枚举器。因此,完成的第一个是枚举器的第一个元素,完成的第二个是枚举器的第二个元素,依此类推。 public static async IAsyncEnumerable&lt;T&gt; ParallelEnumerateAsync(this IE...

9得票2回答
IAsyncEnumerable中的Pass-through?

我希望知道是否有一种方法可以编写“传递”的IAsyncEnumerable函数...也就是说,该函数将调用另一个IAsyncEnumerable函数并生成所有结果,而无需编写foreach来执行它? 我发现自己经常写这种代码模式。以下是一个示例: async IAsyncEnumerable...

8得票1回答
IAsyncEnumerable和数据库查询

我有三个控制器方法,返回WeatherForecast的IAsyncEnumerable。 第一个方法#1使用SqlConnection,并从异步读取器中生成结果。 第二个方法#2使用EF Core,并具有使用AsAsyncEnumerable扩展的能力。 第三个方法#3使用EF Core和T...

8得票2回答
为什么使用IAsyncEnumerable比返回async/await Task<T>更慢?

我正在测试 C# 8 的异步流,并且似乎当我尝试使用旧的 async/await 模式并返回 Task&gt;时,应用程序运行速度更快。(我使用了秒表进行了测量,尝试运行多次,结果是我提到的旧模式似乎比使用 IAsyncEnumerable 更快)。 以下是我编写的简单控制台应用程序代码 (...

8得票2回答
使用IAsyncEnumerable读取文本文件

在测试 C# 8.0 特性时,我遇到了 IAsyncEnumerable。我从 Anthony Chu 的文章中找到了很好的例子 (https://anthonychu.ca/post/async-streams-dotnet-core-3-iasyncenumerable/)。它是异步流和 ...

7得票1回答
将 IObservable<T> 转换为 IAsyncEnumerable<T> 是否可行?

我有一个可观察对象IObservable&lt;T&gt;/ ISubject&lt;T&gt;,想通过使用SignalR返回它。SignalR有异步流的概念,您必须返回一个IAsyncEnumerable&lt;T&gt;。 如何将IObservable&lt;T&gt;转换为IAsyncE...

7得票2回答
当IAsyncEnumerable缺少await操作符时出现警告信息

如果不使用await任务调用此类方法,我们可以返回以下内容: public Task&lt;bool&gt; GetBoolAsync() { return Task.FromResult(true); } 如何等效地使用 IAsyncEnumerable&lt;&gt; 并避免...