Konwertuję zarządzaną metodę System.Action na niezarządzaną funkcję std :: wewnątrz projektu C++/CLI; powinienem zwolnić dany IntPtr po użyciu wywołania zwrotnego, czy jest to niepotrzebne?Marshal :: GetFunctionPointerForDelegate: czy powinienem zwolnić jego wynik?
void MyClass::Execute(System::Action^ callback)
{
IntPtr callbackPtr = Marshal::GetFunctionPointerForDelegate(callback);
std::function<void (void)> nativeCallback = static_cast<void (__stdcall *) (void)>(callbackPtr.ToPointer());
m_nativeObject->Execute(wrappedCallback);
// should I release callbackPtr here?
}
nawet jeśli m_nativeObject-> Execute (wrappedCallback) jest synchroniczny? – Notoriousxl
Wątek zrujnuje ci dzień. Cóż, tydzień. –