我正在使用 boost::asio::windows::stream_handle 并使用 async_read_some 方法从命名管道中递归读取数据。我为 async_read_some 方法关联了一个 read_handler。但是 async_read_some 处理程序只被调用一次,当新消息通过管道时它不会被进一步调用。通过反复试验方法,我将 read_handler 再次分配给 async_read_some 方法,现在它被正确调用了。但这是正确的做法,还是请提出一种从管道获得持续响应的优雅方式。
boost::asio::io_service my_io_service;
boost::asio::windows::stream_handle pipe( my_io_service);
boost::array<char, 4096> buffer;
void CPublishSubscribeLib::read_handler(const boost::system::error_code& ec, std::size_t bytes_transferred)
{
if(bytes_transferred > 0 )
pipe.async_read_some(boost::asio::buffer(buffer, 150), boost::bind(&CPublishSubscribeLib::read_handler, this, _1, _2));
}
谢谢是提前!