【发布时间】:2019-06-05 14:06:00
【问题描述】:
感谢您对以下问题的帮助: A 在我的班级中有一个财产可以说
string Foo {get;set;}
类中有刷新功能。有一个长时间运行的方法,其中更新了
Foo = await Task.Run()... etc.
当每秒调用 1000 次刷新时,如何避免堆叠 Task-s?去抖?节流?怎么做? Rx 在项目中可用,我使用的是 dotnet core 2.2。
类构造函数
res = Observable.FromAsync(() => Task.Run(async () =>
{
await Task.Delay(5000);
return "Example";
}
)).Throttle(TimeSpan.FromSeconds(10));
类
private IObservable<string> res;
public string Foo
{
get => _foo;
set
{
this.RaiseAndSetIfChanged(ref _foo, value);
}
}
public void RefreshFoo()
{
res.Subscribe(x => Foo = x);
}
【问题讨论】:
-
主要问题是每次调用
RefreshFoo时都会创建新订阅。如果RefreshFoo被称为“每秒 1000 次”,您期望什么输出?
标签: c# system.reactive throttling debouncing