目前我正在构建一个需要等待传入消息的网络服务器,但我需要异步等待这些消息。这些消息在另一个保持运行的任务中接收。无尽的任务推送事件,而另一个任务也需要等待这些事件之一被接收。
如果需要的话,我会画一个草图来更好地可视化问题
我已经看到了 TaskCompletionSource 类,但除非客户端断开连接,否则任务不会完成,因此它不会起作用。等待任务完全一样。
是否有适用于 C#/.net 核心的库或内置解决方案?
谢谢你:)
最佳答案
有新的Channel<T>
.NET Core 2.1 和 System.Threading.Channels 中的 API让您异步使用队列:
Channel<int> channel = Channel.CreateUnbounded<int>();
...
ChannelReader<int> c = channel.Reader;
while (await c.WaitToReadAsync())
{
if (await c.ReadAsync(out int item))
{
// process item...
}
}
请引用this有关如何使用它的介绍和更多示例的博客文章。
关于c# - 等待来自永无止境的任务的事件异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788724/