У меня в проекте gsm модем и я к примеру сделал такую штуку
string sendAtRequest(string req, bool wait);
Внутри эта функция шлёт ат команду модему и если нужно то ждёт ответ, когда ответ приходит то возвращает его как строку, без потоков мне кажется такое не сделать