Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / WCF / C# 对象池的实现(能限制最大实例数量,类似于WCF的MaxInstanceCount功能)

C# 对象池的实现(能限制最大实例数量,类似于WCF的MaxInstanceCount功能)2014-04-08 cnblogs Aaron对象池服务可以减少从头创建每个对象的系统开销。在激活对象时,它从池中提取。在停用对象时 ,它放回池中,等待下一个请求。

我们来看下主线程中,如何与对象池打交道:

static void Main(string[] args){InstancePoolResolver.Register<OrderQueryServiceInterface, OrderQueryService>();while (true){Thread.Sleep(2000);Console.Clear();for (int i = 0; i < 20;i++ ){ThreadPool.QueueUserWorkItem(new WaitCallback(ConsumeObject));}}}private static void ConsumeObject(object state){OrderQueryServiceInterface srv = null;try{using (srv = InstancePoolResolver.Resolve<OrderQueryServiceInterface>())//从对象池中取得对象,没有可用对象则throw exception{Console.WriteLine("Object ID--->" + srv.GetHashCode());Thread.Sleep(1000);//故意长时间占用对象}}catch (Exception ex){Console.WriteLine(ex.Message);}finally{if (srv != null)srv.Dispose();}}
运行效果: