public void AccessorShouldUseCommandParameterCanExecuteOneTimeModeAfterDispose() { bool isInvoked = false; var parameter = new object(); var command = new RelayCommand(o => { }, o => { o.ShouldEqual(parameter); isInvoked = true; return false; }, this); var srcAccessor = new BindingSourceAccessorMock(); var source = new BindingSourceModel(); var ctx = new DataContext(BindingBuilderConstants.Behaviors.ToValue(new List<IBindingBehavior> { new OneTimeBindingMode() })); var accessor = GetAccessor(source, BindingSourceModel.EventName, ctx, false, d => parameter); srcAccessor.GetValue = (info, context, arg3) => command; accessor.SetValue(srcAccessor, EmptyContext, true); accessor.Dispose(); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); isInvoked.ShouldBeTrue(); isInvoked = false; command.RaiseCanExecuteChanged(); isInvoked.ShouldBeTrue(); source.ToString();//TO KEEP ALIVE }