public override void Destroy()
{
Debug.Assert(m_pipe == null);
// If there's still a pending linger timer, remove it.
if (m_hasLingerTimer)
{
m_ioObject.CancelTimer(LingerTimerId);
m_hasLingerTimer = false;
}
// Close the engine.
if (m_engine != null)
m_engine.Terminate();
}