在以下代码中,我可以订阅套接字并接收消息。在某个 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();
}
- 1 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消