Hello:
I have a problem using boost deadline timer that I cannot resolve. Why the resume method do not call again to the handler method???
Do I have something wrong?

class TimerCallback
{
public:
    virtual void OnTimer()=0;
};


class Timer : boost::noncopyable
{
public:
    Timer(unsigned long timeOutMilliSeconds, TimerCallback* callbac) :
    m_scheduler(), m_timer(m_scheduler), m_timerThread(),
    m_callbac(callbac), m_timeOutMilliSeconds(timeOutMilliSeconds)
{
};

virtual ~Timer()
{
    m_scheduler.stop();
    m_timerThread->join();
};

void some_operation()
{
    //m_scheduler.post(boost::bind(m_callbac->OnTimer(), this));
    m_callbac->OnTimer();
};

void handler(const boost::system::error_code& error)
{
    if (!error)
    {
        // Timer expired.
            m_callbac->OnTimer();

        m_timer.expires_from_now(boost::posix_time::milliseconds(m_timeOutMilliSeconds));

        // Start an asynchronous wait.
        m_timer.async_wait(boost::bind(&Timer::handler, this, boost::asio::placeholders::error));
    }
}

void start()
{
    // Set an expiry time relative to now.
    m_timer.expires_from_now(boost::posix_time::milliseconds(m_timeOutMilliSeconds));

    // Start an asynchronous wait.
    m_timer.async_wait(boost::bind(&Timer::handler, this, boost::asio::placeholders::error));
    m_timerThread.reset(new boost::thread(boost::bind(&boost::asio::io_service::run, &m_scheduler)));
}

void pause()
{
    m_timer.cancel();
};

void resume()
{
    m_timer.expires_from_now(boost::posix_time::milliseconds(m_timeOutMilliSeconds));
    m_timer.async_wait(boost::bind(&Timer::handler, this, boost::asio::placeholders::error));
};

private:
    boost::asio::io_service            m_scheduler;
    boost::asio::deadline_timer        m_timer;
    boost::scoped_ptr<boost::thread>    m_timerThread;
    TimerCallback*                 m_callbac;
    unsigned long                m_timeOutMilliSeconds;
};

Salu2..
masch...