項目常用演算法之一個C#資源集區的實現

來源:互聯網
上載者:User

這個資源集區用來管理程式的寶貴資源。

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.