コード例 #1
0
        internal override Message RequestCorrelated(Message msg, TimeSpan timeout, IOutputChannel channel)
        {
            DateTime         startTime = DateTime.Now;
            Message          ret       = null;
            ManualResetEvent wait      = new ManualResetEvent(false);
            Action <Message> handler   = delegate(Message reply) {
                ret = reply;
                wait.Set();
            };

            ReplyHandlerQueue.Enqueue(handler);
            channel.Send(msg, timeout);
            if (ret == null && !wait.WaitOne(timeout - (DateTime.Now - startTime)))
            {
                throw new TimeoutException();
            }
            return(ret);
        }