惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
博客园 - Franky
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
S
SegmentFault 最新的问题
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队
B
Blog RSS Feed
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 司徒正美
The Cloudflare Blog
博客园_首页
博客园 - 聂微东
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏

博客园 - DotNet1010

.NET 6 的 docker 镜像可以有多小 Code UTF-8 Console GB2312 Linux 中文乱码 穿透式监管与CTP swagger 兼容 docker 转发 配置 rust 条件编译 Debug Release rust-must-know-crates-5ad8 100DayOfRust python C# DES 加密转换 The Little Book of Rust Books C# 高精度定时器 NET number values such as positive and negative infinity cannot be written as valid JSON C# 各种序列化方案比较 Python3 HDF5 中英文混合存储 MVVM WPF 简化 类的开发 websocket-per-message-compression Asp.net Core WebSocket 支持压缩 Redis 监控工具 期货行情查看客户端下载 完美解决windows10磁盘占用100%并出现卡顿、假死无反应 How to disable the unused macros warning? --rust 看阿里架构师是如何在高并发的情景下运筹帷幄
.NET 5 WPF 配置文件变动 程序自动刷新 (reloadOnChange)
DotNet1010 · 2021-01-13 · via 博客园 - DotNet1010
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives;
using System;
using System.Configuration;
using System.Threading;

namespace WpfLiBroker
{
    public class AppConfig
    {

        public static  Microsoft.Extensions.Configuration.IConfiguration config { get; private set; }
        private static DateTime last_changed_time = DateTime.MinValue;
        static AppConfig()
        {
              config = new ConfigurationBuilder()
             .SetBasePath(System.Environment.CurrentDirectory)
             .AddJsonFile("config.json", false, true)
             .Build();

            LoadData(); //测试此处可以不加  这里加上以防万一

            ChangeToken.OnChange(() => {
                var span = DateTime.Now - last_changed_time;
                last_changed_time = DateTime.Now;
                if (span < TimeSpan.FromSeconds(1)){

                    System.Diagnostics.Debug.WriteLine($"{DateTime.Now.ToLongTimeString()} config change do nothing!");
                    return config.GetReloadToken();
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine($"{DateTime.Now.ToLongTimeString()} config change do something!");
                    //**********************************
                     LoadData();
                    //#######################################
                    var data = config.GetReloadToken();
                    return data;
                }
            }
            , ()=> { });// () => autoReset.Set()
        }

        private static void LoadData()
        {
            Account = config.GetSection("account").Get<Account>();
        }


        public static Account Account { get; private set; }
     
    }

    public class Account
    {
        public string login_code { get; set; }

        public string login_pwd  { get; set; }
    }
}

 配置文件:config.json

{
  "account": {
    "login_code": "code",
    "login_pwd": "pwd"
  }
}

主要实现了配置文件修改后 程序绑定的变量自动刷新