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); }
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); }
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); }