我的控制檯應用程序正在從文本文件中讀取大量數據,並將這些數據保存到數據庫中。爲此,我將數據存儲到DataTable中,並且我希望每5分鐘將此DataTable轉儲到數據庫(如果我想立即轉儲整個數據,那麼我必須將整個數據填充到DataTable中,在這種情況下我得到OutOfMemoryException)。C#:從一個foreach循環中每5分鐘調用一次方法
public void ProcessData()
{
string[] files=File.ReadAllLines(path)
foreach(var item in files)
{
DataRow dtRow= dataTable.NewRow();
dtRow["ID"]= .... //some code here;
dtRow["Name"]= .... //some code here;
dtRow["Age"]= .... //some code here;
var timer = new Timer(v => SaveData(), null, 0, 5*60*1000);
}
}
public void SaveData(string tableName, DataTable dataTable)
{
//Some code Here
//After dumping data to DB, clear DataTable
dataTable.Rows.Clear();
}
我想這裏是什麼,代碼將繼續填充DataTable中,每5分鐘便將調用保存數據()方法。這將繼續運行,直到所有文件處理完畢。
但是,我已經看到,當調用SaveData()方法時,它會執行4-5次。有時候,它每5分鐘就會有一次機器人召喚。
我沒有得到如何在這裏進行。如何解決這個問題?這裏可以使用其他方法嗎?任何幫助表示讚賞。
一旦達到皇冠行數後,通過文本文件進行分頁,然後將數據保存到數據庫中。 – 2013-03-17 14:20:26
在時間基礎上將數據轉儲到數據庫時,如果在這些分鐘內以某種方式進行了更多的讀取,仍然可能會導致內存異常。你不應該在foreach中啓動計時器,而是每次你點擊一些任意數量的行時 - 保存。 – Algirdas 2013-03-17 14:26:04