我在Windows Mobile 6.5设备上安装了扫描仪应用程序。
我扫描100个项目后,应用程序一直崩溃(我打开SqlCe Connection并执行SQL查询以使用查询结果填充临时DataTable)。
这里我的C#代码如何:
// Search with SQL
modFunctions.tempItemTable = new AppScanDataSet.itemDataTable();
string connectionString = @"Data Source='" + modFunctions.AppPath() + "AppScan.sdf'; Max Database Size = 512; Max Buffer Size = 4096;";
string strSql = "SELECT * FROM item WHERE Barcode = '" + modFunctions.strBarcode + "'";
using (SqlCeConnection mConnection = new SqlCeConnection(connectionString))
{
mConnection.Open();
//SqlCeConnection mConnection = new SqlCeConnection(connectionString);
SqlCeCommand mCommand = new SqlCeCommand(strSql, mConnection);
// Read all rows from the table into a dataset (note, the adapter automatically opens connection)
SqlCeDataAdapter adapter = new SqlCeDataAdapter(mCommand);
adapter.Fill(modFunctions.tempItemTable);
mConnection.Close();
mConnection.Dispose();
}
崩溃时出错:
AppScan.exe
SqlCeException
Not enough storage is available to complete this operation
可能是什么问题?我正在清除tempItemTable(Dispose()
和Clear()
)。我还添加了mConnection.Close()
和mConnection.Dispose()
...但它没有帮助。
另外,当我转到设置>系统>内存..当应用程序崩溃时,似乎我有足够的可用内存(100MB中有30MB)。
我是否需要处置adapter
?还是mCommand
?
答案 0 :(得分:2)
你的内存不足。建议不要在Windows Mobile中使用DataSet,而是使用数组或列表。