【发布时间】:2018-04-25 22:15:47
【问题描述】:
我希望能够使用响应式异步接收 udp 包。 我已经写了这段代码。
udpServer = new UdpClient(20000);
remoteEP = new IPEndPoint(IPAddress.Any, 20000);
var read = Observable.FromAsyncPattern(udpServer.BeginReceive, t => udpServer.EndReceive(t, ref remoteEP));
然后我使用这个函数并存储 IObservable 结果。
reader = read()
.Do(s =>
{
Logs.Add(System.Text.Encoding.UTF8.GetString(s));
})
.DoOnError(ex => status = ex.Message; );
当我最终订阅时,操作只发生一次,然后观察者在完成时被处理。
我的问题来了:有没有办法让这段代码连续工作? 每次收到新日志时都接收“DO”操作?
侧边栏:只是想知道 Observable.FromAsyncPattern 有什么意义,如果我不能重用它,我最好静态键入 2 个方法作为开始和结束,而不是获得更多需要稍后处理的类实例的开销。
-im 也对所有其他不同的选项开放,除了使用 TPL。
【问题讨论】:
标签: c# unity3d udpclient unirx