private static void CustomUnmanagedPropertyChangedCallbackSafe(IntPtr dependency_object, IntPtr propertyChangeArgs, ref MoonError error, IntPtr unused)
{
DependencyProperty property;
DependencyObject obj;
try {
try {
IntPtr uprop = NativeMethods.property_changed_event_args_get_property (propertyChangeArgs);
if (!properties.TryGetValue (uprop, out property)) {
Console.Error.WriteLine ("DependencyProperty.CustomUnmanagedPropertyChangedCallback: Couldn't find the managed DependencyProperty corresponding with native {0}/{1}", uprop, NativeMethods.property_changed_event_args_get_id (propertyChangeArgs));
return;
}
obj = NativeDependencyObjectHelper.Lookup (dependency_object) as DependencyObject;
if (obj == null)
return;
InvokeChangedCallback (obj, property, property.change_cb,
Value.ToObject (property.PropertyType, NativeMethods.property_changed_event_args_get_old_value (propertyChangeArgs)),
Value.ToObject (property.PropertyType, NativeMethods.property_changed_event_args_get_new_value (propertyChangeArgs)));
} catch (Exception ex) {
error = new MoonError (ex);
}
} catch (Exception ex) {
try {
Console.WriteLine ("Moonlight: Unhandled exception in DependencyProperty.UnmanagedPropertyChangedCallback: {0}", ex.Message);
} catch {
}
}
}