我正在通过 TCP/IP 实现 JSON RPC 连接,但我遇到了一个基本问题。目前我正在使用同步方法,效果很好。
我能发送
{"id":1,"jsonrpc":"2.0","method":"Input.Home"}
并收到
{"id":1,"jsonrpc":"2.0","result":true}
这没有问题。当我收到通知时会出现问题。这些可能会在任何时候出人意料地到达。我正在与 XBMC JSON RPC API 交互。如果 XBMC 已发送通知,我会同时收到多个 JSON 请求。例如
{"jsonrpc":"2.0","method":"GUI.OnScreensaverActivated","params":{"data":null,"sender":"xbmc"}}{"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data":null,"sender":"xbmc"}}
这会导致 JSON.NET 崩溃,这是可以理解的。我的第一直觉是我需要异步接收这些通知,这样我就不必等到调用下一个方法来接收它们。然而,这使我上面展示的简单示例变得复杂,因为我不能再使用同步调用。IE
SendJson(json);
result = ReceiveJson();
有没有一种干净的方法来实现它而不会使它过于复杂?任何/所有建议表示赞赏。