private static int OnDuplcateUserData(int serialNumber, IntPtr pNativeUserData) { int rc = 0; UserData ud = FromSerialNumber(serialNumber); if (ud != null) { try { Type t = ud.GetType(); UserData new_ud = Activator.CreateInstance(t) as UserData; if (new_ud != null) { // 5 March 2020 S. Baer (RH-56767) // This is user data created from C++ and it's lifetime is managed // by C++. No need to let this have it's lifetime managed by the GC GC.SuppressFinalize(new_ud); new_ud.m_serial_number = g_next_serial_number++; new_ud.m_native_pointer = pNativeUserData; StoreInRuntimeList(new_ud); new_ud.OnDuplicate(ud); rc = new_ud.m_serial_number; } } catch (Exception ex) { Runtime.HostUtils.ExceptionReport(ex); } } return(rc); }
private static int OnDuplcateUserData(int serial_number, IntPtr pNativeUserData) { int rc = 0; UserData ud = FromSerialNumber(serial_number); if (ud != null) { try { Type t = ud.GetType(); UserData new_ud = System.Activator.CreateInstance(t) as UserData; if (new_ud != null) { new_ud.m_serial_number = UserData.m_next_serial_number++; new_ud.m_pNativePointer = pNativeUserData; UserData.StoreInRuntimeList(new_ud); new_ud.OnDuplicate(ud); rc = new_ud.m_serial_number; } } catch (Exception ex) { Runtime.HostUtils.ExceptionReport(ex); } } return(rc); }