2011-08-04 35 views
1

我有一個服務的要求。該要求規定我必須獲得N個服務實例。如果沒有實例可用,則阻止/等待直到釋放實例,然後返回可用實例。這與集體生活方式非常相似。溫莎混合自定義生活方式,阻止

我的彙集生活方式的理解是:

  • 當第一請求N個對象將被創建(其中N是最大池尺寸)
  • 當接收到對於對象的請求,所述合併的生活方式將最初從池中返回一個對象,直到池中的所有對象都「正在使用」
  • 當所有對象「正在使用」時,都會創建其他對象(超出最大池大小的範圍)。
  • 隨着對象被釋放,它們或者被銷燬(如果存在大於最大池大小)或返回到池中(如果小於最大池大小)。

這與我想要的行爲類似,但略有不同。不要創建超出最大池大小的對象,等待「正在使用」的對象被釋放,然後返回可用對象。

任何想法?這可以在不阻止其他線程上的其他容器分辨率的情況下完成嗎?

回答

2

您需要實施IPoolFactoryIPool並將工廠註冊到容器中。然後你的游泳池可以做任何你需要的東西,包括阻塞。

+0

非常感謝...我看到PoolableLifestyleManager使用這兩個接口。我會試一試,然後跟進。 –

+0

工作完美... –

+0

要註冊它:'container.Register(Component.For ()。ImplementedBy ());'' – Nico