Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可观察。生成延迟结果_C#_System.reactive_Scheduler_Observable - Fatal编程技术网

C# 可观察。生成延迟结果

C# 可观察。生成延迟结果,c#,system.reactive,scheduler,observable,C#,System.reactive,Scheduler,Observable,以下代码将结果延迟2秒。我想要的是立即返回结果,但每2秒启动一个新的observable。我错过了什么 产出: 代码: 那么: Observable.Interval(TimeSpan.Zero, TimeSpan.FromSeconds(2.0)) .SelectMany(_ => GenerateAnObservable()) .Subscribe(/* ... */); 替换当前的可观察对象如何。使用以下内容生成: Observable .Generate(

以下代码将结果延迟2秒。我想要的是立即返回结果,但每2秒启动一个新的observable。我错过了什么

产出:

代码:

那么:

Observable.Interval(TimeSpan.Zero, TimeSpan.FromSeconds(2.0))
    .SelectMany(_ => GenerateAnObservable())
    .Subscribe(/* ... */);

替换当前的可观察对象如何。使用以下内容生成:

Observable
    .Generate(
        0,
        i => true,
        i => i + 1,
        i => i,
        i => TimeSpan.FromMilliseconds(i == 0 ? 0 : 2000),
        ThreadPoolScheduler.Instance)
    .Zip(sources, (g, s) => s)
我得到了这个结果:

41: 1. Run
41 Result: 1

43: 2. Run
43 Result: 2

45: 3. Run
45 Result: 3

47: 4. Run
47 Result: 4

49: 5. Run
49 Result: 5

51: 6. Run
51 Result: 6

53: 7. Run
53 Result: 7

55: 8. Run
55 Result: 8

Completed

我在每个循环中都使用generate作为可变周期选择器。这里真的一点也不清楚你在追求什么——我想你对Paul的回答的评论意味着你想要可变的数据驱动间隔,但除此之外,我训练有素的Rx眼睛在你的代码中有很多奇怪的东西。也许用非rx术语解释一下你想要达到的目标是有用的。例如,我们并不完全清楚为什么要像IEnumerable那样为源代码创建IEnumerable。还不清楚源是否应该包含指示所需间隔的数据。
Observable
    .Generate(
        0,
        i => true,
        i => i + 1,
        i => i,
        i => TimeSpan.FromMilliseconds(i == 0 ? 0 : 2000),
        ThreadPoolScheduler.Instance)
    .Zip(sources, (g, s) => s)
41: 1. Run
41 Result: 1

43: 2. Run
43 Result: 2

45: 3. Run
45 Result: 3

47: 4. Run
47 Result: 4

49: 5. Run
49 Result: 5

51: 6. Run
51 Result: 6

53: 7. Run
53 Result: 7

55: 8. Run
55 Result: 8

Completed