static void Main() { // Create a client CalculatorInstanceClient client = new CalculatorInstanceClient(); string instanceMode = client.GetInstanceContextMode(); Console.WriteLine("InstanceContextMode: {0}", instanceMode); DoCalculations(client); // Create a second client CalculatorInstanceClient client2 = new CalculatorInstanceClient(); DoCalculations(client2); //Closing the client gracefully closes the connection and cleans up resources client.Close(); Console.WriteLine(); Console.WriteLine("Press <ENTER> to terminate client."); Console.ReadLine(); }
static void Main() { // Create a client to default endpoint configuration CalculatorInstanceClient client1 = new CalculatorInstanceClient(); //Create a new 1028 bit strong InstanceContextId that we want the server to associate //the InstanceContext that will process all message's from this client. String uniqueId = NewInstanceId(); MessageHeader Client1InstanceContextHeader = MessageHeader.CreateHeader( CustomHeader.HeaderName, CustomHeader.HeaderNamespace, uniqueId); try { using (new OperationContextScope(client1.InnerChannel)) { //Add the header as a header to the scope so it gets sent for each message. OperationContext.Current.OutgoingMessageHeaders.Add(Client1InstanceContextHeader); DoCalculations(client1); } // Create a second client CalculatorInstanceClient client2 = new CalculatorInstanceClient(); //We want this to communicate with InstanceContext created by Proxy1 using (new OperationContextScope(client2.InnerChannel)) { //Add the same header that client1 used so we will connect to that same InstanceContext try { OperationContext.Current.OutgoingMessageHeaders.Add(Client1InstanceContextHeader); DoCalculations(client2); //Closing the client gracefully closes the connection and cleans up resources client2.Close(); } catch (CommunicationException) { client2.Abort(); } catch (TimeoutException) { client2.Abort(); } catch (Exception) { client2.Abort(); throw; } } client1.Close(); } catch (CommunicationException) { client1.Abort(); } catch (TimeoutException) { client1.Abort(); } catch (Exception) { client1.Abort(); throw; } Console.WriteLine(); Console.WriteLine("Press <ENTER> to terminate client."); Console.ReadLine(); }