Я написал управляемый класс, который оборачивается вокруг неуправляемого объекта C ++, но я обнаружил, что - при использовании его в C # - GC запускается рано, пока я выполняю метод для объекта. Я прочитал о сборке мусора и о том, как предотвратить это на ранней стадии. Одним из способов является использование оператора «using» для контроля за удалением объекта, но это накладывает ответственность на клиента управляемого объекта. Я мог бы добавить к управляемому классу:
MyManagedObject::MyMethod()
{</p>
<pre><code>System::Runtime::InteropServices::GCHandle handle =
System::Runtime::InteropServices::GCHandle::Alloc(this);
// access unmanaged member
handle.Free();
}
Это похоже на работу. Будучи новичком в .NET, как другие люди решают эту проблему?
Спасибо,
Юхан