Пример #1
0
        /// <summary>
        /// Finishes the async request.
        /// </summary>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        public new static T End(IAsyncResult result)
        {
            TypedCompletedAsyncResult <T> completedResult = result as TypedCompletedAsyncResult <T>;

            if (completedResult == null)
            {
                throw new ArgumentException("Invalid async messageBody.", "messageBody");
            }

            return(TypedAsyncResult <T> .End(completedResult));
        }
Пример #2
0
        /// <summary>
        /// Tries to dequeue the next message.
        /// </summary>
        /// <param name="result">The result.</param>
        /// <param name="message">The message.</param>
        /// <returns></returns>
        public bool TryDequeue(IAsyncResult result, out T message)
        {
            message = null;
            TypedAsyncResult <T> completedResult = result as TypedAsyncResult <T>;

            if (completedResult != null)
            {
                message = TypedAsyncResult <T> .End(result);
            }
            else if (result.CompletedSynchronously == false)
            {
                InputQueue <T> .AsyncQueueReader completedResult2 = result as InputQueue <T> .AsyncQueueReader;
                InputQueue <T> .AsyncQueueReader.End(result, out message);
            }
            return(result.IsCompleted);
        }