/// <summary>
        /// The engine
        /// </summary>
        /// <param name="message"></param>
        /// <param name="alertType"></param>
        /// <param name="messageBoxButton"></param>
        private MessageBoxResult Display(String message, AlertMessageBoxType alertType, MessageBoxButton messageBoxButton)
        {
            //Only show this dialog if this type has not shown for last 30 seconds.  This is to prevent multiple
            //threads from popping up the same error.
            if (alertType != AlertMessageBoxType.General && alertType == currentAlertType)
            {
                if ((DateTime.Now - lastDispayTime).Seconds < MinimumSeconds)
                {
                    return(MessageBoxResult.None);
                }
            }

            //Show only one message box at a time. Block until all the other alerts are done.
            lock (showMessageBox)
            {
                //Start locking all the other threads.
                showMessageBox.Reset();
                currentAlertType = alertType;
            }


            if (String.IsNullOrEmpty(message))
            {
                message = alertType.GetDescription <AlertMessageBoxType>();
            }

            MessageBoxResult result = MessageBoxResult.None;

            //Sanity Check. Don't show empty message boxes.
            if (String.IsNullOrEmpty(message) == false)
            {
                lastDispayTime = DateTime.Now;
                result         = MessageBox.Show(message, Application.Current.MainWindow.Title, messageBoxButton, MessageBoxImage.Error);
            }
            else
            {
                Debug.Assert(false, "Empty alert message.  Please fix!");
            }

            showMessageBox.Set();
            return(result);
        }
 /// <summary>
 /// Show messagebox if not already showing
 /// </summary>
 /// <param name="message"></param>
 /// <param name="alertType"></param>
 /// <param name="messageBoxButtons"></param>
 public MessageBoxResult Show(String message, AlertMessageBoxType alertType, MessageBoxButton messageBoxButtons)
 {
     return(Display(message, alertType, messageBoxButtons));
 }
 /// <summary>
 /// Show messagebox if not already showing
 /// </summary>
 /// <param name="message"></param>
 /// <param name="alertType"></param>
 public void Show(String message, AlertMessageBoxType alertType)
 {
     Display(message, alertType);
 }
 /// <summary>
 /// Show MessageBox if appropriate of alertType
 /// </summary>
 /// <param name="alertType"></param>
 public void Show(AlertMessageBoxType alertType)
 {
     Display(String.Empty, alertType);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 /// <param name="alertType"></param>
 private void Display(String message, AlertMessageBoxType alertType)
 {
     Display(message, alertType, MessageBoxButton.OK);
 }