小编Ale*_*lex的帖子

如何使用RX限制事件流?

我想有效地限制事件流,以便在收到第一个事件时调用我的委托,但如果收到后续事件则不会持续1秒.在超时(1秒)到期后,如果收到后续事件,我希望调用我的代理.

使用Reactive Extensions有一种简单的方法吗?

示例代码:

static void Main(string[] args)
{
    Console.WriteLine("Running...");

    var generator = Observable
        .GenerateWithTime(1, x => x <= 100, x => x, x => TimeSpan.FromMilliseconds(1), x => x + 1)
        .Timestamp();

    var builder = new StringBuilder();

    generator
        .Sample(TimeSpan.FromSeconds(1))
        .Finally(() => Console.WriteLine(builder.ToString()))
        .Subscribe(feed =>
                   builder.AppendLine(string.Format("Observed {0:000}, generated at {1}, observed at {2}",
                                                    feed.Value,
                                                    feed.Timestamp.ToString("mm:ss.fff"),
                                                    DateTime.Now.ToString("mm:ss.fff"))));

    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

当前输出:

Running...
Observed 064, generated at 41:43.602, observed at 41:43.602
Observed 100, generated at 41:44.165, observed at 41:44.602
Run Code Online (Sandbox Code Playgroud)

但我想观察(时间戳显然会改变)

Running...
Observed 001, generated …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

30
推荐指数
4
解决办法
2万
查看次数

创建一个Action <T>来"设置"一个属性,当我为"get"提供LINQ表达式时

我希望能够生成一个已编译的表达式来设置属性,给定lambda表达式为属性提供"get"方法.

这是我正在寻找的:

public Action<int> CreateSetter<T>(Expression<Func<T, int>> getter)
{
    // returns a compiled action using the details of the getter expression tree, or null
    // if the write property is not defined.
}
Run Code Online (Sandbox Code Playgroud)

我仍然试图理解各种类型的表达式类,所以如果你能指出我正确的方向,这将是伟大的.

c# expression-trees

14
推荐指数
2
解决办法
8179
查看次数

标签 统计

c# ×2

expression-trees ×1

system.reactive ×1