示例#1
0
        IAsyncResult IAsyncRelayTransport.BeginSendInMessageList(List <SerializedRelayMessage> messages, AsyncCallback callback, object state)
        {
            var result = new SimpleAsyncResult(callback, state);

            ThreadPool.QueueUserWorkItem(o =>
            {
                ((IRelayTransport)this).SendInMessageList(messages);
                result.SetComplete();
            });
            return(result);
        }
示例#2
0
        IAsyncResult IAsyncRelayTransport.BeginSendMessage(RelayMessage message, bool forceRoundTrip, AsyncCallback callback, object state)
        {
            var result = new SimpleAsyncResult(callback, state);

            if (forceRoundTrip)
            {
                ThreadPool.QueueUserWorkItem(o =>
                {
                    ((IRelayTransportExtended)this).SendSyncMessage(message);
                    result.SetComplete();
                });
                return(result);
            }
            ThreadPool.QueueUserWorkItem(o =>
            {
                ((IRelayTransport)this).SendMessage(message);
                result.SetComplete();
            });
            return(result);
        }
示例#3
0
        IAsyncResult IAsyncRelayTransport.BeginSendMessageList(List <RelayMessage> messages, AsyncCallback callback, object state)
        {
            var result = new SimpleAsyncResult(callback, state);

            if (messages.Count == 0)
            {
                result.SetComplete();
                return(result);
            }

            ThreadPool.QueueUserWorkItem(o =>
            {
                if (messages[0].IsTwoWayMessage)
                {
                    ((IRelayTransport)this).SendOutMessageList(messages);
                }
                else
                {
                    ((IRelayTransportExtended)this).SendSyncMessageList(messages);
                }
                result.SetComplete();
            });
            return(result);
        }