程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 項目常用算法之一個C#資源池的實現(1)

項目常用算法之一個C#資源池的實現(1)

編輯:關於C語言

這個資源池用來管理程序的寶貴資源。

主要的類是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 }

(以上測試只是簡單的演示功能,詳細的測試代碼跟項目其他類有關,貼上反而復雜)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved