///<summary></summary>
 public StatsdPerfLoggerAppender(IStatsdPerfLoggerAppenderSettings settings)
 {
     if (settings == null) throw new ArgumentNullException("settings");
     _settings = settings;
     _queue = new TimedActionQueue<string>(SendImpl, settings.SendInterval);
     _threadSafeUdpClient = new ThreadSafeUdpClient(
         settings.Host, settings.Port,
         string.Format("sending to udp://{0}:{1} interval={2}\n{{0}}", _settings.Host, _settings.Port, _settings.SendInterval));
 }
        ///<summary></summary>
        public void Dispose()
        {
            if (_isDisposing)
            {
                return;
            }
            _isDisposing = true;

            if (_threadSafeUdpClient == null)
            {
                return;
            }

            try
            {
                _threadSafeUdpClient.Dispose();
                _threadSafeUdpClient = null;
            }
            catch
            {
            }
        }