【发布时间】:2019-02-02 20:32:23
【问题描述】:
我想在配置更改时记录。
I do this 在Program.cs 或Startup.cs:
ChangeToken.OnChange(
() => configuration.GetReloadToken(),
state => logger.Information("Configuration reloaded"),
(object)null
);
但我收到双重更改报告,因此需要对其进行去抖动处理。 The advice is to do this:
ChangeToken.OnChange(
() => configuration.GetReloadToken(),
state => { Thread.Sleep(2000); logger.Information("Configuration reloaded"); },
(object)null
);
我在这里使用2000,因为我不确定什么是合理的值。
我发现有时我仍然会得到多个更改检测,间隔 2000 毫秒。所以去抖动对我不起作用,只会导致报告的更改之间出现延迟。如果我设置了一个较高的值,那么我只会得到一份报告,但这并不理想(并且掩盖了问题)。
所以我想知道:
- 这真的是去抖动,还是只是将报告的更改排队?
- 我使用了从 1000 到 5000 的值来获得不同程度的成功。其他人在用什么?
- 是否向服务器的主线程发出休眠?我希望不会!
【问题讨论】:
标签: c# asp.net-core