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++;
});
我有一个在 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++;
});