private void SetCallback(IntPtr pointer, IntPtr clientData) { int data = Marshal.ReadInt32(pointer); if (IsValid(data)) { bool changed = (data != value); value = data; if (changed) { OnChanged(EventArgs.Empty); } } }