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

时间:2015-04-30 14:32:23

标签: linqpad

我已经想到了LINQPad中一个有趣的小扩展方法,但它让我知道如何做到这一点。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

使用Rx,您可以这样做:

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

请考虑使用DumpContainer,这样您就不会对结果窗口发送每个结果的垃圾邮件。

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