private void SendMessages(TimeSpan channelTimeout, TimeSpan messageSendTimeout) { ChannelFactory <IOutputChannel> channelFactory = new ChannelFactory <IOutputChannel>(Util.GetBinding(), Queue); IOutputChannel proxy = channelFactory.CreateChannel(); IAsyncResult[] resultArray = new IAsyncResult[MessageCount]; for (int i = 0; i < MessageCount; i++) { Message toSend = Message.CreateMessage(MessageVersion.Default, string.Empty, i); resultArray[i] = proxy.BeginSend(toSend, messageSendTimeout, null, null); } for (int j = 0; j < MessageCount; j++) { proxy.EndSend(resultArray[j]); } IAsyncResult iocCloseResult = proxy.BeginClose(channelTimeout, null, null); Thread.Sleep(TimeSpan.FromMilliseconds(50.0)); // Dummy work proxy.EndClose(iocCloseResult); IAsyncResult chanFactCloseResult = channelFactory.BeginClose(channelTimeout, null, null); Thread.Sleep(TimeSpan.FromMilliseconds(50.0)); // Dummy work channelFactory.EndClose(chanFactCloseResult); }