问题标签 [iasyncenumerable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
920 浏览

c# - 是否有像 Queue 这样实现 IAsyncEnumerable 的 C# 类?

两者都QueueConcurrentQueue实施IEnumerable但不是IAsyncEnumerable。NuGet 上是否有可用的标准类或类实现IAsyncEnumerable这样,如果队列为空,MoveNextAsync直到将下一个内容添加到队列中,结果才会完成?

0 投票
2 回答
1853 浏览

c# - 在返回带有取消的 IAsyncEnumerable 的函数中迭代 IAsyncEnumerable

正如标题所说,我必须遵循以下功能:

我很难理解取消令牌的去向,并且感觉我在太多地方使用它。

当你解构所有花哨的异步东西时,这里实际发生了什么?有没有更好的方法来编写这个函数?

0 投票
5 回答
2405 浏览

c# - 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

请看以下两种方法。第一个返回一个IAsyncEnumerable. 第二个试图消耗它。

当代码尝试读取结果IDataReader(at object videoID = firstRecord["VideoID"];)时,我得到了这个异常:

阅读器关闭时调用元数据的尝试无效。

这是因为SqlDataReader被处置。有人可以提供推荐的方法来SqlDataReader以异步方式枚举,以便调用方法可以使用每个结果记录吗?谢谢你。

0 投票
1 回答
500 浏览

c# - 异步任务似乎同步运行

在 内Run,我正在尝试将 10,000 个任务排队。(这只是一个实验,所以我可以更好地理解async await。)但是第一个循环需要三秒钟才能完成。我希望这会更快,因为我只是想在await几行之后将任务和它们排队。仍然在Run,alreadyCompleted中是正确的,因为任务似乎已经同步运行。最后,仍然在 内Run,第二个循环需要 1 毫秒才能完成,再次显示任务已经运行。

如何将任务排队运行,同时仍然允许执行通过该Run方法进行,直到我使用await?如果我的一些任务在被检查时已经完成,我会理解alreadyCompleted,但所有任务都完成了似乎很奇怪。此行为在 ASP.NET Core 3、.NET Core 3 控制台和 .NET Framework 控制台之间是一致的。谢谢你。

更新

在运行 .NET Core 应用程序并使用max1,000 时,alreadyCompleted是错误的。实际上,查看IsCompleted每个任务,alreadyCompleted当前没有完成的任务。这是我在原始场景中所期望的。

但如果max设置为 10,000(如其最初的那样),alreadyCompleted则为假,如上所示。有趣的是,检查tasks[max - 1].IsCompleted结果false(首先检查最后一个任务)。 tasks.All(t => t.IsCompletedSuccessfully)最后检查最后一个结果,此时IsCompletedtrue.

0 投票
2 回答
5547 浏览

c# - 说明 IAsyncEnumerable 如何与 ASP.NET Web API 配合使用

在 ASP.NET Web API 项目中探索 IAsyncEnumerable 时,我遇到了一个有趣的行为。考虑以下代码示例:

示例 1(int 数组){}作为 JSON 结果返回。

样本 2 返回预期结果["0","1","2","3","4","5","6","7","8","9"]。但是,等待 10 秒后会立即返回整个 JSON 数组。当数据从 IAsyncEnumerable 接口按预期变为可用时,不应该返回它吗?或者有什么特定的方式应该使用这个 web api?

0 投票
1 回答
868 浏览

c# - 是否可以转换 IObservable到 IAsyncEnumerable

我有一个可观察的IObservable<T>/ISubject<T>并希望通过使用 SignalR 来返回它。SignalR 具有异步流的概念,您必须在其中返回一个IAsyncEnumerable<T>.

如何将 an 转换IObservable<T>为 an IAsyncEnumerable<T>

0 投票
3 回答
6710 浏览

c# - How to await all results from an IAsyncEnumerable<>?

I'm tinkering around with the new IAsyncEnumerable<T> stuff in C# 8.0. Let's say I've got some method somewhere that I want to consume:

#xA;

I'm aware that I can use it with the await foreach... syntax. But let's say my consumer needs to have all results from this function before it continues. What's the best syntax to await all results before continuing? In other words, I'd like to be able to do something like:

#xA;

What's the correct way to do this?

0 投票
4 回答
6873 浏览

c# - 'AsyncEnumerableReader' 在枚举值时达到了配置的最大缓冲区大小

我正在使用返回 IAsyncEnumerable<> 的 async/await 方法从 SQL Server 数据库中检索行并通过 Web API .Net Core 3.0 接口提供它们。它工作正常,直到我超过 8192 行。超出该点的行将失败。我尝试了 3 个不同的表,每个表的行大小都非常不同。每次在产生 8192 行后发生故障。这是我看到的错误:

0 投票
1 回答
1952 浏览

c# - 在 SignalR ASP.NET Core 3.0 中使用 IAsyncEnumerable 尝试 Catch

尝试从 ASP.NET Core 3 SignalR Hub 捕获顶级异常

这很棘手,因为我正在使用 yield return,并且您不能将其包装在 try-catch 块中。它给出了这个编译器错误:

CS1626 C# 无法在带有 catch 子句的 try 块的主体中​​产生值

在这里讨论

那么,如何捕获这个异常呢?它被困在内部某处并发送到javascript客户端。我似乎在 ASP.NET Core 中间件管道中看不到异常。

试图捕捉一个异常,所以Log.Fatal(ex)它可以到 serilog

在此处输入图像描述

异常正在传递给 js 客户端。

ASP.NET Core 3 日志记录未捕获异常。

Program.cs

Startup.cs

0 投票
2 回答
2354 浏览

c# - 使用 IAsyncEnumerable 读取文本文件

我在测试 C# 8.0 功能时遇到了 IAsyncEnumerable。我从 Anthony Chu ( https://anthonychu.ca/post/async-streams-dotnet-core-3-iasyncenumerable/ ) 那里找到了一些非凡的例子。它是异步流和替代Task<IEnumerable<T>>

我想知道这是否可以应用于读取文本文件,如下面的逐行读取文件的用法。

我真的很想知道如何将 async withIAsyncEnumerable<string>()应用于上述 foreach 循环,以便它在阅读时流式传输。

如何实现迭代器,以便可以使用 yield return 逐行读取?