我已经在我的项目中使用Rx一段时间用于事件并专门用于Socket编程,其中很好的部分是它做得很好。管理我的代码,性能优势,以及更好地执行和解释。
最近我必须修改项目的流程,我需要将所有传入的数据(从套接字操作)转储到队列中(使用MSMQ实现作为排队决定)。
由于MSMQ提供异步调用以从队列中释放消息(但是以一种奇怪的模式)。 我现在一直在努力将Rx用于此目的,但是可以这样做。
问题:有人可以给我一个干净的代码示例来实现Rx,以便使用异步模式从队列接收消息。
我需要MSMQ的异步运算符实现类似于这样的
var data = Observable.FromAsyncPattern<byte[]>(
this.receiverSocket.BeginReceive,
this.receiverSocket.EndReceive(some parameters);
提前致谢。 * 欢呼 * 到Rx和.NET
答案 0 :(得分:4)
这很简单:
var queue = new System.Messaging.MessageQueue("test");
var fun = Observable.FromAsyncPattern((cb, obj) => queue.BeginReceive(TimeSpan.FromMinutes(10),obj,cb), a => queue.EndReceive(a));
var obs = fun();