我正在尝试使用起始值创建订阅中心。我无法设置起始值。
现在我可以观察到,它每隔30分钟生成一次DateTime.UtcNow。
public async Task Subscribe()
{
var client = Clients.Client(Context.ConnectionId);
var subscription = new CompositeDisposable();
var dateTimeUTCNow = Observable.Interval(TimeSpan.FromMinutes(30))
.Subscribe(@event =>
{
client.SendAsync("newDateTimeUtc", DateTime.UtcNow);
});
subscription.Add(dateTimeUTCNow);
RegisterHandler(subscription, userFound.UserToken);
}
我必须设置起始值-DateTime.NowUtc
答案 0 :(得分:1)
您可以使用.Timer(TimeSpan dueTime, TimeSpan period)
重载代替Interval运算符。
如果将dueTime设置为TimeSpan.Zero
,它将在订阅时发出第一项。
Observable
.Timer(TimeSpan.Zero, TimeSpan.FromMinutes(30))
.Select(_ => DateTime.UtcNow)
...
作为gitbox mentioned,您也可以使用StartWith。但是StartWith将为您提供声明时间而不是订阅时间。如果声明时间和订阅时间相同,那么当然不会有差异。
答案 1 :(得分:0)
您是否正在寻找StartWith运算符?
Observable
.Interval(TimeSpan.FromMinutes(30))
.Select(_ => DateTime.UtcNow)
.StartWith(DateTime.UtcNow)
...