.NET Core???????????????????????????[8]: ???????????????????????????????????????-??????-????????????-?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????.NET Core??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????JSON????????????????????????JsonConfigurationSource???????????????????????????????????????Microsoft.Extensions.Configuration.Json?????????NuGet??????????????????????????????project.json????????????????????????????????????????????????NuGet???????????????[ ????????????????????????ASP.NET Core?????????????????????]
1: {
2: ...
3: "dependencies": {
4: ...
5: "Microsoft.Extensions.Configuration.Json": "1.0.0"
6: }
7: }
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????JSON?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????MinThreads ???MaxThreads????????????????????????????????????????????????????????????????????????ThreadPoolOptions????????????Options?????????
1: public class ThreadPoolOptions
2: {
3: public int MinThreads { get; set; }
4: public int MaxThreads { get; set; }
5:??
6: public override string ToString()
7: {
8: return $"Thread pool size: [{MinThreads}, {MaxThreads}]";
9: }
10: }
????????????????????????????????????threadPool.json??????????????????????????????????????????????????????????????????????????????project.json????????????????????????????????????????????????????????????????????????????????????????????????bin????????????????????????????????????????????????????????????????????????????????????????????????builtOptions/copyToOutput????????????????????????????????????
1: {
2: ...
3: "buildOptions": {
4: ...
5: "copyToOutput": "threadPool.json"
6: }
7: }
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ConfigurationBuilder???????????????????????????????????????JsonConfigurationSource??????????????????JsonConfigurationSource????????????????????????????????????????????????threadPool.json?????????????????????????????????????????????????????????True????????????????????????ReloadOnChange?????????????????????????????????????????????????????????????????????????????????????????????????????????
1: IConfiguration config = new ConfigurationBuilder()
2: .Add(new JsonConfigurationSource {Path = "threadPool.json", ReloadOnChange = true })
3: .Build();
4:??
5: Action changeCallBack = () => {
6: ThreadPoolOptions options = new ServiceCollection()
7: .AddOptions()
8: .Configure<ThreadPoolOptions>(config)
9: .BuildServiceProvider()
10: .GetService<IOptions<ThreadPoolOptions>>()
11: .Value;
12: Console.WriteLine(options);
13: };
14:??
15: ChangeToken.OnChange(()=>config.GetReloadToken(), changeCallBack);
16:??
17: Random random = new Random();
18: while (true)
19: {
20: ThreadPoolOptions options = new ThreadPoolOptions
21: {
22: MinThreads = random.Next(10, 20),
23: MaxThreads = random.Next(40, 50)
24: };
25: File.WriteAllText(Path.Combine(AppContext.BaseDirectory, "threadPool.json"), JsonConvert.SerializeObject(options));
26: Task.Delay(5000).Wait();
27: }
?????????ConfigurationBuilder??????Configuration?????????????????????????????????GetReloadToken??????????????????ChangeToken??????????????????????????????????????????????????????????????????????????????ChangeToken?????????????????????OnChange?????????ChangeToken???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Options?????????????????????????????????ThreadPoolOptions?????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????5??????????????????threadPool.json?????????????????????????????????????????????????????????????????????????????????threadPool.json?????????????????????????????????Configuration??????????????????????????????Configuration???????????????????????????????????????GetReloadToken????????????ChangeToken?????????HasChanged???????????????True?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????S04???
??????????????????????????????A
?????????www.weibo.com/artech
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
最後更新:2017-10-25 11:05:58
上一篇:
.NET Core采用的全新配置係統[7]: 將配置保存在數據庫中
下一篇:
.NET Core采用的全新配置係統[9]: 為什麼針對XML的支持不夠好?如何改進?
hibernate一對多連接懶加載EAGER隻能有一個,如果有多個報錯,需要手動強製錄入
什麼是頂級域名、地理域名、個性域名
深度解析Java8 – AbstractQueuedSynchronizer的實現分析(上)
sql server 遊標
PhalApi-RabbitMQ基於PhalApi專業隊列拓展
家用醫療儀器的市場發展分析
給2014年的自己開的書單
《Spring攻略(第2版)》——1.12 用@Autowired和@Resource自動裝配Bean
SPI FLASH與NOR FLASH的區別?
java 響應式 企業網站 源碼 SSM 生成靜態化 手機 平板 PC