我目前正在开发一个在 Windows Mobile 6.1(不是 WP)上运行的应用程序。我构建了一个应用程序,它每天多次同步来自远程服务器的数据。但不知何故,看起来这些数据在完成后被“记住”了。任务管理器显示应用程序定期启动时使用了大约 3MB,每次运行同步时都会增加大约 2MB。多次后,我收到内存使用警告,我必须重置设备或重新启动程序。
我正在寻找的是某种在同步后清除数据的方法,一种垃圾收集器。在(常规)C# 中,我找到了 Collect(),但我无法在 C# 移动设备中使用它。
下面是我的代码,它工作正常,除了在某个时候我收到消息“Geheugentekort”(“内存短缺”)。
可能在 for{} 代码之后,我必须清空 doc、root 和 XmlNodeList 等变量,但问题是如何...
我的设备:Pidion BIP-5000 操作系统:Windows Mobile 6.1
XmlDocument doc = new XmlDocument();
doc.Load(xmlUrl);
XmlElement root = doc.DocumentElement;
try
{
totaal = Int32.Parse(doc.GetElementsByTagName("Totaal")[0].InnerText.ToString());
// Create lists with values
XmlNodeList namen = doc.GetElementsByTagName("naam");
XmlNodeList ptypen = doc.GetElementsByTagName("ptype");
XmlNodeList ids = doc.GetElementsByTagName("id");
// Door het totaal heen itereren
for (int i = 0; i < totaal; i++)
{
// Create variables of it
int id = Int32.Parse(ids[i].InnerText.ToString());
int ptype = Int32.Parse(ptypen[i].InnerText.ToString());
string naam = namen[i].InnerText.ToString();
// Check if ID exists
int tot = this.tbl_klantTableAdapter.GetData(id).Count;
if (tot == 0)
{
// New item, add
this.tbl_klantTableAdapter.Insert(naam, ptype, id);
}
else
{
// Existing, update
this.tbl_klantTableAdapter.Update(naam, ptype, id);
}
}
}
catch
{
// Rest of code