簡體   English   中英

如何將以下類轉換為 IObservable?

[英]How do I turn the following class into an IObservable?

我有以下課程

namespace TickRateEntity
{
    public struct TickRateData
    {
        public double tickrate;
    }

    public class TickRate
    {
        private TickRateData tickRateData;
        //etc
    }
}

如何更改這些類,以便每 n 分鍾,TickRate 或 TickRateData 數據發布雙倍tickrate

假設您有一個帶有TickRate GetTickRate()簽名的方法,那么它可以工作:

int n = 5;
IObservable<double> query =
    from x in Observable.Interval(TimeSpan.FromMinutes(n))
    let tickRate = GetTickRate()
    select tickRate.tickRateData.tickrate;

IDisposable subscription = query.Subscribe(x => /* do something with `x` */);

否則,如果TickRate是以其他方式生成的,我們需要知道如何回答這個問題。

假設您的tickRateData以某種方式填充,那么您可以執行以下操作:

public class TickRate : IDisposable
{
    private TickRateData tickRateData;
    private readonly IDisposable _subscription;

    public IObservable<double> Stream { get; }

    public TickRate(double intervalInMinutes)
    {
        var stream = Observable.Interval(TimeSpan.FromMinutes(intervalInMinutes))
                               .Select(_ => tickRateData.tickrate)
                               .Publish();

        _subscription = stream.Connect();

        Stream = stream;
    }

    public void Dispose()
    {
        _subscription?.Dispose();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM