Как использовать JSON.NET JsonTextReader для асинхронного чтения из сетевого потока?

#c# #silverlight #json.net

#c# #silverlight #json.net

Вопрос:

Я реализовал свой собственный NetworkStream порт для Silverlight, который разрешает только асинхронные вызовы.
Я хотел бы прочитать некоторые сообщения JSON-RPC, которые я получаю с сервера, поэтому я решил использовать JSON.NET JsonTextReader итак, в итоге я получил следующий код:

 reader = new JsonTextReader(new StreamReader(new NetworkStream(new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))));  
// ...
reader.Read();  
  

Моя проблема в том, что он попытается выполнить синхронную операцию, которая, в свою очередь, просто выдаст UnsupportedException .
Есть ли асинхронный, StreamReader с помощью которого я могу передать JsonTextReader ?
Должен ли я использовать другой подход?

Ответ №1:

Я думаю, вам следует. Я не думаю, что вы можете заставить JsonTextReader использовать асинхронный подход, но вы могли бы изменить весь метод, используемый для получения данных, для асинхронного поведения. Кроме того, используйте

 using(var io = new StreamReader())
{ 
    io.Read(); 
} 
  

синтаксис.

Комментарии:

1. Я знаю, что я должен использовать синтаксис ‘using’. Это не имело отношения к вопросу. В любом случае спасибо.