public void Dispose()
        {
            shouldContinue = false;
            logger.DebugFormat("Stopping transport for {0}", queueEndpoint);

            if (timeout != null)
            {
                timeout.Dispose();
            }

            if (cleanUp != null)
            {
                cleanUp.Dispose();
            }
            DisposeQueueManager();

            if (!haveStarted)
            {
                return;
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }
        }