5

修正するために.NetCF3.5で記述されたWindowsMo​​bileアプリが提供されましたが、問題の1つはストレージに関係しています。

「この操作を完了するのに十分なストレージがありません」というメッセージが数回表示されます。これはSQLCEデータベースに記録され、データアクセス中に常に発生します(ただし、同じビットのデータアクセスではありません)。

私が少し混乱しているのは、これがプログラムメモリ(RAMなど)を指しているのか、ストレージメモリ(永続ストレージなど)を指しているのかということです。ストレージメモリのように見えますが、デバイスには十分な空き容量があるようです。いくつかのOutOfMemoryExceptionsがありますが、これらはこの問題とはまったく関係がないように見えます(画像関連の問題により、別の時間に発生します)。

SQL CE 3.5を単一の接続で使用しています。これは、アプリと一緒にデバイスに保存されます(ストレージカードではありません)。デバイスは、WindowsMo​​bile6.1を実行しているMotorolaMC75です。

何かご意見は?

4

3 に答える 3

8

これは、低レベルのWindowsエラー、コード14、ERROR_OUTOFMEMORYです。エラーメッセージには「メモリ」については記載されていません。これは、メモリ不足が原因であるとは限らないためです。最も一般的なトリガーは、カーネルリソースのクォータを超えるプログラムです。10,000個のウィンドウハンドルのように、他にもたくさんあります。これはデスクトップ版の場合ですが、WindowsMo​​bileでははるかに低いことは間違いありません。

まあ、プログラムは貯金箱です。このエラーをトリガーする1つの可能な方法は、IDisposableを実装するクラスのオブジェクトに対してDispose()を呼び出さないことです。これにより、ガベージコレクターとファイナライザースレッドが実行されるまで解放されないカーネルリソースが消費されます。しばらく時間がかかる場合があります。SQLCEクラスは確かに候補です。リソースリークまたは過剰使用がどこから来ているのかわからない場合は、CFで動作するプロファイラーに投資してください。

于 2010-05-21T11:50:21.640 に答える
0

どのくらいの仮想メモリが割り当てられていますか?可能であれば値を増やしてみてください。

于 2010-05-21T11:02:18.353 に答える
0

これがMC75にも当てはまるかどうかはわかりませんがStart->Settings->Control Panel->System、[メモリ]タブがあり、RAMとして使用できるメモリの量と、ファイルを保存するために予約されているメモリの量を調整できます。

これは、\ Permanent Storageフォルダー(またはデバイスで呼び出される\ Storage Card)には適用されませんが、\Tempなどの他のフォルダーには適用されます。

于 2010-05-21T11:37:59.033 に答える