public static void UsePooledChannels() { foreach (var factoryAndPoolOfItsChannels in s_recyclablePooledFactoriesAndChannels.GetAllPooledInstances()) { foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances()) { s_CallChannelStats.CallActionAndRecordStats(() => { channel.GetData(44); }); } } }
public static void CreateFactoriesAndChannelsUseAllOnceCloseAll() { using (var theOneTimeThing = new PoolOfThings <FactoryAndPoolOfItsObjects <ChannelFactory <WcfService1.IService1>, WcfService1.IService1> >( maxSize: 3, // # of pooled FactoryAndPoolOfItsObjects createInstance: () => new FactoryAndPoolOfItsObjects <ChannelFactory <WcfService1.IService1>, WcfService1.IService1>( createFactoryInstance: () => TestHelpers.CreateChannelFactory <WcfService1.IService1>(TestHelpers.CreateEndPointAddress(), TestHelpers.CreateBinding()), destroyFactoryInstance: (chf) => s_CloseFactoryStats.CallActionAndRecordStats(() => TestHelpers.CloseFactory(chf)), maxPooledObjects: 3, // # of pooled channels within each pooled FactoryAndPoolOfItsObjects createObject: (chf) => s_CreateChannelStats.CallFuncAndRecordStats(TestHelpers.CreateChannel, chf), destroyObject: (ch) => s_CloseChannelStats.CallActionAndRecordStats(() => TestHelpers.CloseChannel(ch)) ), destroyInstance: (_fapoic) => _fapoic.Destroy())) { foreach (var factoryAndPoolOfItsChannels in theOneTimeThing.GetAllPooledInstances()) { foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances()) { s_CallChannelStats.CallActionAndRecordStats(() => { channel.GetData(44); }); } } } }
public static void CreateUseAndCloseChannels() { foreach (var factory in s_recyclablePooledChannelFactories.GetAllPooledInstances()) { WcfService1.IService1 channel = null; s_CreateChannelStats.CallActionAndRecordStats(() => channel = factory.CreateChannel()); if (channel != null) { s_CallChannelStats.CallActionAndRecordStats(() => channel.GetData(1)); s_CloseChannelStats.CallActionAndRecordStats(() => { (channel as IClientChannel).Close(); }); } } }