LINQPAD - 每 X 秒 运行 语句的扩展方法

LINQPAD - Extension Method to run statement every X seconds

我有一个在 LINQPad 中使用一个有趣的小扩展方法的想法,但它让我难以理解如何去做。

基本上我想要一个扩展方法,我可以在任何 LINQPad 语句的末尾添加,使该语句每 X 秒执行一次。

所以,例如,我会做这样的事情: "Hello World".Dump().RunEvery(5);

这将每 5 秒执行一次 "Hello World".Dump()。其结果将是 Hello World 每 5 秒转储到屏幕上。

我希望它足够灵活,以便在 LINQPad 中执行的任何语句都可以 运行 计时器。这对于我 运行 EventLog 表的查询很有用,因此我不必像我那样经常手动 运行 它们。我可以继续翻回 window 并知道我看到的是最新的。

我认为这涉及 C# 反射和计时器,但我正在努力将它们组合在一起。此外,由于 Dump 本身是 LINQPad 扩展方法,因此语法可能必须有所不同,例如: "Hello World".RunEvery(5).Dump();

无论如何,如果您有想法或做过类似的事情,请告诉我。我真的很想不再需要一直按 F5!

使用 Rx,你可以做这样的事情:

Observable.Interval(TimeSpan.FromSeconds(5)).ForEach(_ =>
{
    "Hello World".Dump();
});

考虑使用 DumpContainer,这样您就不会在每个结果中发送垃圾邮件 window。

var container = new DumpContainer().Dump();
var i = 0; // just to show the difference
Observable.Interval(TimeSpan.FromSeconds(5)).ForEach(_ =>
{
    container.Content = "Hello World" + i++;
});