private void DisposeResourcesWhoseDisposalCannotFail()
{
disposing = true;
lock (newMessageArrivedLock)
{
Monitor.PulseAll(newMessageArrivedLock);
}
if (wasStarted)
{
purgeOldDataTimer.Dispose();
queuedMessagesSender.Stop();
sendingThread.Join();
receiver.Dispose();
}
while (currentlyInCriticalReceiveStatus > 0)
{
logger.WarnFormat("Waiting for {0} messages that are currently in critical receive status", currentlyInCriticalReceiveStatus);
Thread.Sleep(TimeSpan.FromSeconds(1));
}
while (currentlyInsideTransaction > 0)
{
logger.WarnFormat("Waiting for {0} transactions currently running", currentlyInsideTransaction);
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}