C# 反应UI ObservablesProperty帮助性能

C# 反应UI ObservablesProperty帮助性能,c#,wpf,data-binding,reactiveui,C#,Wpf,Data Binding,Reactiveui,守则: 公共类AppViewModel:反应对象 { 公共AppViewModel { Observable.TimerTimeSpan.FromSeconds1、TimeSpan.FromSeconds1、RxApp.MainThreadScheduler .Do=>得分++ 订阅 } 私人长(u)分数;; 公众长记分 { get=>\u得分; set=>this.RaiseAndSetIfChangedref\u分数,值; } } 在功能上等同于: 公共类AppViewModel:反应对象

守则:

公共类AppViewModel:反应对象 { 公共AppViewModel { Observable.TimerTimeSpan.FromSeconds1、TimeSpan.FromSeconds1、RxApp.MainThreadScheduler .Do=>得分++ 订阅 } 私人长(u)分数;; 公众长记分 { get=>\u得分; set=>this.RaiseAndSetIfChangedref\u分数,值; } } 在功能上等同于:

公共类AppViewModel:反应对象 { 私有只读可观察属性帮助分数; 公共AppViewModel { _得分= 可观察 .TimerTimeSpan.FromSeconds1、TimeSpan.FromSeconds1、RxApp.MainThreadScheduler .toproperty这个,x=>x.分数; } 公共长分数=>\u分数.Value; } 虽然,在第二种情况下,在开始计数之前,我的机器上有一个明显的延迟超过一秒。这是什么原因

完整性:

MainWindow.xaml

MainWindow.xaml.cs

使用ReactiveUI; 使用系统反应性一次性用品; 命名空间反应演示 { 公共部分类主窗口:反应窗口 { 公共主窗口 { 初始化组件; ViewModel=新的AppViewModel; this.WhenActivateddisposableRegistration=> { 此.OneWayBindViewModel, viewModel=>viewModel.Score, view=>view.ScoreLabel.Content .处置可处置的登记; }; } } }
您正在使用的TopProperty重载具有反射成本。试着用这个,核心的名字。由于TopProperty的性能可能比您发布的功能等效物稍高一些,因此可能仍然会对性能造成影响。

可能会认为,更重要的是要求计时器以第一个参数开始1秒。@Rodney感谢您的提示,但没有任何改进。是的,我知道他们的不同,我检查了代码库。不过,一秒钟的底线似乎很多。我们甚至还没有在管道里做任何事情。@Glenn你是什么意思?两个代码段都以完全相同的方式声明计时器,但是第一个代码段在显示视图时就开始计数。啊,我突然想到了。在第一个代码片段中,当可观察到的滴答声为零时,分数已经增加。谢谢各位。