为了账号安全,请及时绑定邮箱和手机立即绑定

如何将套接字监听为 IEnumerable?

如何将套接字监听为 IEnumerable?

C#
qq_遁去的一_1 2022-10-23 16:40:04
在以下代码中,我可以订阅套接字并接收消息。在某个 IO 线程中接收到消息。var subscription = SubscribeToStreamAsync( msg => { } ).Result;...Unsubscribe( subscription );foreach我想在通常的循环中收听这些消息。所以,我需要在我的线程中路由消息并将流返回为IEnumerable.foreach(var item in GetStreamAsync().Result) {    if (item == ...) break;}我可以通过System.Collections.Concurrent吗?而且我不想使用System.Reactive.
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我已经完成了以下方式。


只是我担心如果套接字/服务器发生任何问题,线程会冻结。


var collection = new BlockingCollection<object>();

var subscription = SubscribeToStreamAsync().Result;

try {

    var enumerable = collection.GetConsumingEnumerable();

    foreach (var item in enumerable) {

        yield return item;

    }

} finally {

    // foreach or stream is completed

    Unsubscribe( subscription ).Wait();

}


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信