/// <summary> /// Property changed event from a ffi object. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void FFIObjectPropertyChanged(Object sender, PropertyChangedEventArgs args) { string propertyName = args.PropertyName; if (String.IsNullOrEmpty(propertyName)) { return; } // Ignore all property changed event when the update engine is // re-executing graph nodes because of previous property changed // event if (mHostCore.IsEvalutingPropertyChanged()) { return; } GraphNode graphNode = null; if (mFFIObjectHostGraphNode.TryGetValue(sender, out graphNode)) { graphNode.propertyChanged = true; if (FFIPropertyChangedEventHandler != null) { FFIPropertyChangedEventArgs newargs = new FFIPropertyChangedEventArgs(propertyName, graphNode); FFIPropertyChangedEventHandler(newargs); } } }
private void FFIPropertyChanged(FFIPropertyChangedEventArgs arg) { lock (taskQueue) { taskQueue.Enqueue(new PropertyChangedTask(this, arg.hostGraphNode)); } }