1

私たちのアプリケーションは WinCE5.0 で動作します (.net cf で書かれています)

特定の理由により、アプリケーションで使用する MMF ファイルを作成する必要がありました (MMF ファイルはアプリケーションでのみ使用する必要があります)。

ここで、ランダムな時間に (いつ、どのような状況で正確に見つけることはできません)、MMF ファイルが他のプロセスによって使用され、データが書き込まれることに気付きました。これにより、MMF ファイルが破損します。

これを回避する方法をお知らせください。

言い換えれば、MMF をアプリケーション専用にして共有しないようにしたいということです。

ありがとう。

4

1 に答える 1

1

Windows CE のメモリ マップ ファイルは、常に仮想アドレス空間の共有ファイル マッピング領域にマップされます。すべてのプロセスは、この領域に読み書きアクセスできます。この領域は、別のプロセスによって上書きされないように保護することはできません。

.NET Compact Framework 自体は、メモリ マッピングを使用して、読み込まれたアセンブリをその領域にマップし、プロセス スロットにアセンブリが読み込まれないようにします。TypeLoadExceptionMissingMethodException、またはExecutionEngineException.NETCF が破損したアセンブリからコードを JIT しようとした場合など、他の問題が発生することが予想されます。

ファイル マッピング ハンドルまたは基になるファイル ハンドルを閉じていませんか? これにより、Windows がメモリが空いていると判断し、他の目的に再利用する可能性があります。

于 2013-05-23T01:46:11.810 に答える