zoukankan      html  css  js  c++  java
  • 使用ChangToken配置变更监听

    IChangeToken 接口

    IChangeToken 传播已发生更改的通知。 IChangeToken 驻留在 Microsoft.Extensions.Primitives 命名空间中。

    常用方法:IChangeToken 接口具有 RegisterChangeCallback(Action<Object>, Object) 方法,用于注册在令牌更改时调用的回调。 调用回调之前,必须设置 HasChanged

    我们可以给Configuration对象注册一个ChangeCallBack回调方法,当配置文件改变时我们输出改变后的新值。

    当前Json文件配置为:

    {
      "Key1": "1",
      "Key2": "a1",
      "Key3": "v1"
    }
    class Program
        {
            static void Main(string[] args)
            {
                var builder = new ConfigurationBuilder();
    
                builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
    
                var configurationRoot = builder.Build();
    
                IChangeToken changeToken = configurationRoot.GetReloadToken();
    
                changeToken.RegisterChangeCallback(state =>
                {
                    Console.WriteLine($"Key1:{configurationRoot["Key1"]}");
                    Console.WriteLine($"Key2:{configurationRoot["Key2"]}");
                    Console.WriteLine($"Key3:{configurationRoot["Key3"]}");
                }, configurationRoot);
    
                Console.ReadKey();
            }
        }

    当我们修改Json文件时,回调函数将会被调用。

    但此回调仅仅会被执行一次,如果继续改变Json文件配置的值,回调函数也不会在触发了。所以我们如果想做到长时间的监控可以用ChangeToken类中的OnChange拓展方法。

    ChangeToken 类

    ChangeToken 是静态类,用于传播已发生更改的通知。 ChangeToken 驻留在 Microsoft.Extensions.Primitives 命名空间中。

    ChangeToken.OnChange(Func<IChangeToken>, Action) 方法注册令牌更改时要调用的 Action

    • Func<IChangeToken> 生成令牌。
    • 令牌更改时,调用 Action

    ChangeToken.OnChange<TState>(Func<IChangeToken>, Action<TState>, TState) 重载还具有一个 TState 参数,该参数传递给令牌使用者 Action

    OnChange 返回 IDisposable。 调用 Dispose 将使令牌停止侦听更多更改并释放令牌的资源。

    这里注意第一个入参是一个泛型委托

    ChangeToken.OnChange(() => configurationRoot.GetReloadToken(), () =>
    {
    //You Want To Do
    });
  • 相关阅读:
    sql 日期格式化 比较全面
    SQL Server 2005 中的树形数据处理示例1
    Web网站的性能测试工具
    js实现时分秒
    sql查询远程数据库的表的数据并填充到本地数据库的表
    Windows 2003操作系统十四招加速大法
    window2003 server的一些优化设置_windows 2003
    解决html向aspx页面传值汉字乱码问题
    js快捷键大全 http://www.zhangxinxu.com/wordpress/?p=1667
    iis 重启命令
  • 原文地址:https://www.cnblogs.com/Xieyiincuit/p/13977405.html
Copyright © 2011-2022 走看看