/// <summary>
 /// Updates the send result.
 /// </summary>
 /// <param name="result">The result of sending the message.</param>
 internal void MessageSent(SendResults result)
 {
     lock (_lockObject)
     {
         _sendResult = result;
         _progress = MessageSendProgress.Completed;
     }
 }
        /// <summary>
        /// Blocks until the specified progress is reached.
        /// </summary>
        /// <param name="progressToBlockUntil">The progress to block until.</param>
        private void BlockUntilProgress(MessageSendProgress progressToBlockUntil)
        {
            bool block;
            lock (_lockObject)
            {
                block = _progress < progressToBlockUntil;
            }

            while (block)
            {
                Thread.Sleep(1);
                lock (_lockObject)
                {
                    block = _progress < progressToBlockUntil;
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageSendResult" /> class.
 /// </summary>
 internal MessageSendResult()
 {
     _progress = MessageSendProgress.SendingMessage;
 }