Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# INotifyPropertyChanged在silverlight c中频繁调用时出错#_C#_Silverlight_Telerik_Inotifypropertychanged_Silverlight 5.0 - Fatal编程技术网

C# INotifyPropertyChanged在silverlight c中频繁调用时出错#

C# INotifyPropertyChanged在silverlight c中频繁调用时出错#,c#,silverlight,telerik,inotifypropertychanged,silverlight-5.0,C#,Silverlight,Telerik,Inotifypropertychanged,Silverlight 5.0,我已经创建了一个基本视图模型,将我所有视图模型的所有公共属性都放入其中,并由我的C#Silverlight应用程序的所有视图模型实现 我的基本视图模型还为所有视图模型实现了INotifyPropertyChanged接口 public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyName) { if (

我已经创建了一个基本视图模型,将我所有视图模型的所有公共属性都放入其中,并由我的C#Silverlight应用程序的所有视图模型实现

我的基本视图模型还为所有视图模型实现了
INotifyPropertyChanged
接口

public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
当我频繁调用
PropertyChanged
事件时,我得到错误:

Error HRESULT E_FAIL has been returned from a call to a COM component.
堆栈跟踪为

at MS.Internal.XcpImports.CheckHResult(UInt32 hr) at MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh) at MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj) at System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value) at System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue) at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation) at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet, Boolean isBindingInStyleSetter) at System.Windows.Controls.Control.set_DefaultStyleKey(Object value) at System.Windows.Controls.ContentControl..ctor() at MS.Internal.CoreTypes.GetCoreWrapper(UInt32 typeId) at MS.Internal.ManagedPeerTable.EnsureManagedPeer(IntPtr unmanagedPointer, Int32 typeIndex, Type type, Boolean preserveManagedObjectReference) at MS.Internal.XcpImports.ConvertDO(IntPtr doPointer, Int32 typeIndex, Boolean releaseObjectReference) at MS.Internal.XcpImports.ConvertType(CValue outVal, Int32 typeIndex, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject) at MS.Internal.XcpImports.ConvertCValueForManagedWithType(Type propertyType, CValue& outVal, Int32 outDOType, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject) at MS.Internal.XcpImports.GetValue(IManagedPeerBase managedPeer, DependencyProperty property) at System.Windows.DependencyObject.GetValueInternal(DependencyProperty dp) at System.Windows.FrameworkElement.GetValueInternal(DependencyProperty dp) at System.Windows.FrameworkElement.get_Parent() at Telerik.Windows.RadRoutedEventHelper.FindParent(FrameworkElement item) at Telerik.Windows.RadRoutedEventHelper.BuildRoute(DependencyObject element, EventRoute route, RadRoutedEventArgs args) at Telerik.Windows.RadRoutedEventHelper.RaiseEvent(DependencyObject element, RadRoutedEventArgs args) at Telerik.Windows.DependencyObjectExtensions.RaiseEvent(DependencyObject element, RadRoutedEventArgs e) at Telerik.Windows.Controls.Selector.OnSelectionChanged(SelectionChangedEventArgs e) at Telerik.Windows.Controls.RadComboBox.OnSelectionChanged(SelectionChangedEventArgs e) at Telerik.Windows.Controls.Selector.OnSelectionChanged(Object sender, SelectionChangedEventArgs e) at Telerik.Windows.Controls.Selector.SelectionChanger`1.InvokeSelectionChangedEvent() at Telerik.Windows.Controls.Selector.SelectionChanger`1.End() at Telerik.Windows.Controls.Selector.SelectionChanger`1.SelectJustThisItem(T item) at Telerik.Windows.Controls.Selector.SelectItemWithValue(Object value) at Telerik.Windows.Controls.Selector.CoerceSelectedValue(Object value) at Telerik.Windows.Controls.Selector.OnCoerceSelectedValue(DependencyObject sender, Object newValue) at Telerik.Windows.PropertyMetadata.DoCoercion(Func`3 areValuesEqual, DependencyObject d, DependencyProperty dp, CoerceValueCallback coerceCallback, Object defaultBaseValue, Boolean forceNewBaseValue, Boolean& isReentrantImplicitCoercion) at Telerik.Windows.PropertyMetadata.PropertyChangeHook.OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue) at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation) at System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp) at System.Windows.Data.BindingExpression.SendDataToTarget() at System.Windows.Data.BindingExpression.SourceAcquired() at System.Windows.Data.Debugging.BindingBreakPoint.<>c__DisplayClass4.<BreakOnSharedType>b__3() 在MS.Internal.XcpImports.CheckHResult(UInt32小时) 在MS.Internal.XcpImports.SetValue处(IManagedPeerBase对象,DependencyProperty属性,DependencyObject doh) 在MS.Internal.XcpImports.SetValue处(IManagedPeerBase doh,dependencProperty属性,对象obj) 位于System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp,对象值) 位于System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty属性、EffectiveValueEntry和newEntry、Object newValue) 在System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty属性、EffectiveValueEntry oldEntry、EffectiveValueEntry&newEntry、ValueOperation操作) 位于System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp、对象值、布尔AllowareAdonlySet、布尔isBindingInStyleSetter) 在System.Windows.Controls.Control.set\u DefaultStyleKey(对象值)中 在System.Windows.Controls.ContentControl..ctor()中 位于MS.Internal.CoreTypes.GetCoreWrapper(UInt32 typeId) 在MS.Internal.ManagedPeerTable.ensureNamedpeer(IntPtr非托管指针、Int32类型索引、类型类型、布尔保留ManagedObjectReference) 在MS.Internal.XcpImports.ConvertDO(IntPtr doPointer、Int32 typeIndex、Boolean releaseObjectReference) 在MS.Internal.XcpImports.ConvertType(CValue outVal、Int32 typeIndex、Boolean releaseObjectReference、Boolean deleteBuffer、IManagedPeerBase fromObject) 在MS.Internal.XcpImports.ConvertCValueForManagedWithType(类型propertyType、CValue&outVal、Int32 outDOType、Boolean releaseObjectReference、Boolean deleteBuffer、IManagedPeerBase fromObject) 位于MS.Internal.XcpImports.GetValue(IManagedPeerBase managedPeer,DependencyProperty属性) 位于System.Windows.DependencyObject.GetValueInternal(DependencyProperty dp) 位于System.Windows.FrameworkElement.GetValueInternal(DependencyProperty dp) 在System.Windows.FrameworkElement.get_Parent()中 在Telerik.Windows.RadRoutedEventHelper.FindParent(框架元素项) 在Telerik.Windows.RadRoutedEventHelper.BuildRoute(DependencyObject元素、EventRoute路由、RadRoutedEventArgs参数) 在Telerik.Windows.RadRoutedEventHelper.RaiseEvent(DependencyObject元素,RadRoutedEventArgs参数) 在Telerik.Windows.DependencyObjectExtensions.RaiseEvent(DependencyObject元素,RadRoutedEventArgs e) 在Telerik.Windows.Controls.Selector.OnSelectionChanged(SelectionChangedEventArgs e) 在Telerik.Windows.Controls.RadComboBox.OnSelectionChanged(SelectionChangedEventArgs e) 在Telerik.Windows.Controls.Selector.OnSelectionChanged(对象发送器,SelectionChangedEventArgs e) 在Telerik.Windows.Controls.Selector.SelectionChanger`1.InvokeSelectionChangedEvent()中 在Telerik.Windows.Controls.Selector.SelectionChanger`1.End()中 在Telerik.Windows.Controls.Selector.SelectionChanger`1.选择JustThisItem(T项) 在Telerik.Windows.Controls.Selector.SelectItemWithValue(对象值)中 在Telerik.Windows.Controls.Selector.胁迫选择值(对象值) 在Telerik.Windows.Controls.Selector.OnCorCeSelectedValue(DependencyObject sender,Object newValue) 在Telerik.Windows.PropertyMetadata.DoCoercion(函数'3为ValueSequal、DependencyObject d、DependencyProperty dp、强制值回调强制回调、对象defaultBaseValue、布尔值forceNewBaseValue、布尔值和IsReentrantimPlicitImplicity强制) 在Telerik.Windows.PropertyMetadata.PropertyChangeHook.OnPropertyChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) 位于System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp、Object oldValue、Object newValue) 在System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty属性、EffectiveValueEntry oldEntry、EffectiveValueEntry&newEntry、ValueOperation操作) 位于System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp) 位于System.Windows.Data.BindingExpression.SendDataToTarget()处 位于System.Windows.Data.BindingExpression.SourceAcquired()处 在System.Windows.Data.Debugging.BindingBreakPoint.c__DisplayClass4.b__3()中
没有发现INotifyPropertyChanged的实现有任何问题,但是我怀疑您的代码导致了无限循环


如果您可以共享一个可以重现您的问题的示例项目,人们可能会帮助您解决问题。

您是否更改过后台线程上的任何属性?不,它在ui线程中总是更改。我认为它可能与您正在使用的Telerik控件有关。你试过联系技术支持吗?否则,您需要制作一个可以重现问题的样本。我也实现了ViewModelBase和INP,但我没有问题,所以我认为这个问题可能与绑定或Telerik的方式有关。您设置了什么属性值?在我看来,设置的值无效。我怀疑这取决于电话的频率。