這個資源集區用來管理程式的寶貴資源。
主要的類是ResourcePool<T>。
使用者可以通過調用GetResource方法請求一個資源,用完之後通過ReturnResource歸還給資源集區。由資源集區決定什麼時候釋放多餘的資源。
介面IResourceProvider<T>用來獲得資源。
類ResourceTag<T>用來標誌資源是否在用。
具體的就不多說了,請看代碼。歡迎討論。
先是測試代碼:
1 using System;
2 using NUnit.Framework;
3 using System.Data.SqlClient;
4 public class SqlConnectionProvider: IResourceProvider<SqlConnection>
5 {
6 public SqlConnection Request()
7 {
8 SqlConnection con= new SqlConnection();
9 //在此開啟資料庫連接,因為ResourcePool要求管理那些能用的資源。
10 //con.Open();
11 return con;
12 }
13 public void Dispose(SqlConnection con)
14 {
15 //在此銷毀對象
16 con.Dispose();
17 }
18 }
19 [TestFixture]
20 public class Test
21 {
22 [Test]
23 public void TestPool()
24 {
25 //此處初始化資源集區,參數:一個資源提供類和一個最大資源集區中最大資源數目
26 ResourcePool<SqlConnection> pool=ResourcePool<SqlConnection>.Instance(new SqlConnectionProvider(),10);
27
28 long resourceID;
29 SqlConnection con=pool.GetResource(out resourceID);
30 //在此處使用con對象
31
32 //用完就歸還
33 pool.ReturnResource(ref con,resourceID);
34
35
36 }
37 }
(以上測試只是簡單的示範功能,詳細的測試代碼跟項目其他類有關,貼上反而複雜)