問題の解決策を得るために頭を悩ませているので、アンマネージド コードで 2 つのマネージド オブジェクトを比較する必要があります。
つまり、マネージド オブジェクトに既にアクセスしているかどうかを比較すると、圧縮はアンマネージド コードで行われます。
私の最初のアイデアは、メモリ アドレスを渡すことですが、C# でオブジェクト アドレスを取得できませんでした (オブジェクトを固定することもできません)。
アドレスを比較することで既に比較を実装している既存の C++ コードを使用しています。
アイデアを得るためのいくつかのコード例:
C# コード:
Object obj ;
if (IsObjAccessed(obj))
{
// do something
}
else
{
// SerializeObject
SaveAccessedObject(obj);
}
================================================== ==
C++ コード:
bool IsObjAccessed(UINT8* address) ;
void SaveAccessedObject(UINT8* address) ;