Вы также можете использовать параметр контекста, который пропускает комментарии в вашем web.xml.
Это параметр:
javax.faces.FACELETS_SKIP_COMMENTS
Вы можете использовать асинхронные методы NetworkStream и установить ManualResetEvent в методе EndReceive.
// ...
netStream.BeginRead(buffer, offset, callback, state);
// ...
внутри метода обратного вызова
netStream.EndRead(ar);
netStreamManualResetEvent.Set();
, затем ваш код
while (notDone)
{
WaitHandle.WaitAny(new WaitHandle[] { queue1.HasData, queue2.HasData, netStreamManualResetEvent} );
// ...
if (netStream.DataAvailable)
{
// make the buffer from the AsyncState in the callback method available here
// process buffer
}
}
Я обнаружил, что, если Вы звоните NetworkStream.Read
с size = 0
, это на самом деле заблокируется:
networkstream.Read(buffer, 0, 0);
документация не соглашается с этим, но для меня она работала.
Самый простой способ - это, вероятно, использовать дополнительный поток, который синхронно читает и помещает дополнительные данные в дополнительную очередь.
В качестве альтернативы вы можете использовать асинхронный ввод-вывод. , но это несколько сложно - и вам все равно понадобится дополнительная очередь.