public ServiceClientWindow() { InitializeComponent(); _receiveMessageDelegate = ReceiveMessage; _receivedMessages = new BindingList<ServiceMessage>(); receivedMessageList.DataSource = _receivedMessages; receivedMessageList.DisplayMember = "Text"; _serviceHost = new InstanceContext(null, this); _heartbeatClient = new ServiceHeartbeatClient(ServiceAddress, xpressive.Wcf.Extensions.Channels.TransportMode.Msmq, new TimeSpan(0, 0, 30)); _heartbeatClient.ServiceStatusChanged += HeartbeatClientServiceStatusChanged; if (_client == null || _client.State != CommunicationState.Opened) { _client = new BroadcastServiceClient(_serviceHost); } }
static void Main(string[] args) { int msgId = 0; InstanceContext site = new InstanceContext(null, new Program()); BroadcastServiceClient client = new BroadcastServiceClient(site); Console.WriteLine("Subscribing to Broadcaster Service"); Guid clientId = client.Subscribe(); while (true) { Console.WriteLine(); Console.Write("Press p to publish a message, or u to unsubscribe and shut down client: "); ConsoleKeyInfo key = Console.ReadKey(false); if (key.Key == ConsoleKey.U) { break; } if (key.Key == ConsoleKey.P) { msgId++; Console.WriteLine("\nYour message will have message ID {0}.", msgId.ToString()); Console.WriteLine("Write your message and press ENTER to publish: "); string message = Console.ReadLine(); if (!String.IsNullOrEmpty(message)) { client.BeginNotify( clientId, message, (ar) => { client.EndNotify(ar); int mId = (int)ar.AsyncState; Console.WriteLine("\nMessage {0} sent to service.\n", mId); }, msgId); } } } Console.WriteLine("Unsubscribing from Broadcaster Service"); client.Unsubscribe(clientId); client.Close(); }