void again()
		{
			if (iWaiting)
				throw already_waiting();
			iTimerObject.expires_from_now(boost::posix_time::milliseconds(iDuration_ms));
			iTimerObject.async_wait(boost::bind(&timer::handler, this, boost::asio::placeholders::error));
			iWaiting = true;
		}
	void timer::again()
	{
		if (disabled())
			enable(false);
		if (waiting())
			throw already_waiting();
		iTimerObject.expires_from_now(boost::posix_time::milliseconds(iDuration_ms));
		iTimerObject.async_wait(boost::bind(&handler_proxy::operator(), iHandlerProxy, boost::asio::placeholders::error));
		iWaiting = true;
	}