2012-04-18 49 views
1

我有一个方法从postgressql数据库返回DataSet处置旧的数据集,并用C#中的新条目重新填充它

ds = stats.loadStats(); 

我需要在3分钟内随机更新DataSet(例如)。

   Random r = new Random(); 
       var rendom_number = r.Next(0, 179);//3 minutes = 3*60 = 180 sec. 
       if (rendom_number == 1) 
       { 
        //reload Dataset here 
       } 

一旦事件被触发 - 我需要处理旧数据集,并用新的更新,而不会造成过载,内存泄漏或其他故障。你如何用C#做到这一点?

有三种方法我知道,但哪一种最好?

  1. 方法

     ds.Clear(); //disposing of old DataSet 
         ds = stats.loadStats(); //loading new 
    
  2. 方法

     ds.Dispose(); //disposing of old DataSet 
         ds = stats.loadStats(); //loading new 
    
  3. 方法

     ds = null; //disposing of old DataSet 
         ds = stats.loadStats(); //loading new 
    
  4. 什么是你的方法是什么? (或最好的选择)

+1

这是一个非常全面的检讨[(问题和答案)] [1]可能的备选方案: [1]:http://stackoverflow.com/questions/913228/should-i-dispose -dataset-and-datatable – Ulises 2012-04-18 16:14:48

+0

感谢您的链接! – Alex 2012-04-18 16:20:03

回答

0

所有你需要的是

//ds.Clear(); 
//ds = null; 
ds.Dispose(); // not really needed but out of general principle 
ds = stats.loadStats(); // gets a new instance 

离开其余的垃圾收集器。