/// <summary>
        /// The send method.
        /// </summary>
        /// <param name="d">
        /// The d.
        /// </param>
        /// <param name="state">
        /// The state.
        /// </param>
        public override void Send(SendOrPostCallback d, object state)
        {
            var item = new SendOrPostCallbackItem(d, state, false);

            this.blockingQueue.Enqueue(item);
            item.ExecutionCompletedFlag.WaitOne();
            if (item.Exception != null)
            {
                throw item.Exception;
            }
        }
        /// <summary>
        /// The post method.
        /// </summary>
        /// <param name="d">
        /// The d.
        /// </param>
        /// <param name="state">
        /// The state.
        /// </param>
        public override void Post(SendOrPostCallback d, object state)
        {
            var item = new SendOrPostCallbackItem(d, state, true);

            this.blockingQueue.Enqueue(item);
        }