1 回答

TA贡献1875条经验 获得超5个赞
在我看来,这就是你需要的:
public void Test()
{
IObservable<Unit> timer =
Observable
.Defer(() =>
{
var now = DateTimeOffset.Now;
var result = new DateTimeOffset(now.Year, now.Month, now.Day, now.Hour, now.Minute + 1, 0, now.Offset);
return Observable.Timer(result, TimeSpan.FromMinutes(1.0));
})
.SelectMany(x => Observable.FromAsync(() => InvokeMethod()));
timer.Subscribe();
}
请记住,这会随着时间的推移而漂移,并且不会每分钟触发一次。每次都需要重新调整。使用Observable.Generate会更好。
public void Test()
{
IObservable<Unit> timer =
Observable
.Generate(
new { now = DateTimeOffset.Now, count = 0 },
t => true,
t => new { t.now, count = t.count + 1 },
t => t.count,
t => t.now.AddMinutes(t.count))
.SelectMany(x => Observable.FromAsync(() => InvokeMethod()));
timer.Subscribe();
}
- 1 回答
- 0 关注
- 119 浏览
添加回答
举报