Создание асинхронного метода на событии
От: mitechka  
Дата: 16.10.15 17:17
Оценка:
Всем доброй пятницы!

Столкнулся со следующей проблемой.

Есть библиотека, реализующая межсетевое взаимодействие. Она классическая event-based. Т.е. есть событие получения/отправки сообщения. Но есть беда — есть метод SendMessage в классах клиента и сервера, но вот метода ReceiveMessage нет. Мол, не нужен — событие ж прилетает. Мне нужны синхронная и асинхронная версии ReceiveMessage. Думал, что может спасти ситуацию вариант с TaskCompletionSource, т.е. под каждого клиента, присоединившегося к серверу, например (пока представим, что нам нужно "допилить" серверную часть), изначально создаётся TaskCompletionSource, потом по отработке события делается SetResult(), далее же обратно возвращаем TaskCompletionSource в исходное состояние после отработки. Но у TaskCompletionSource нет методов возврата из RanToCompletion, а пересоздавать каждый раз под вызов ReceiveMessage() TaskCompletionSource крайне криво.
Посоветуйте, плз, как решить эту проблему "малой кровью" (т.е. быстро и качественно).
Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.