У меня есть класс-оболочка для сокетов, который отправляет и получает сообщения с сервера (в частности, команды, ответы и уведомления). У меня также есть класс потребления, который сериализует команды в текст для отправки через оболочку. Моя проблема в том, что когда команда отправляется, мне нужно подождать, пока я не получу сообщение с определенным заголовком. Когда я делаю это, класс потребления блокируется, так как я использую ManualResetEvent.WaitOne, который устанавливается моим методом получения. Причина, по которой проблема заключается в том, что мои блокирующие классы потребляют, заключается в том, что тем временем может быть получено другое сообщение, и я не могу его обработать Есть ли способ заблокировать определенный объект, чтобы мой класс мог реагировать на другие события?
Способ отправки:
_waitingCommands.Enqueue(command);
String commandText = command.ToString();
_socket.Send(commandText);
Способ получения:
if (response.Header.Type == Messages.MessageType.Response)
{
if (command.Response == null)
command.Response = response;
_waitingCommands.Dequeue();
command.Finished.Set();
}