当前位置: 首页 > news >正文

药品网站模板物业服务企业的品牌建设

药品网站模板,物业服务企业的品牌建设,制作照片视频的软件,网站制作开发06 | 作用域与对象释放行为接下来#xff0c;把服务切换为单例模式#xff0c;通过工厂的方式services.AddSingletonIOrderService(p new DisposableOrderService());启动程序#xff0c;输出如下#xff1a;1 2 接口请求处理结束可以看到代码实际上不会被释放… 06 | 作用域与对象释放行为接下来把服务切换为单例模式通过工厂的方式services.AddSingletonIOrderService(p new DisposableOrderService());启动程序输出如下1 2 接口请求处理结束可以看到代码实际上不会被释放如果切换为瞬时模式通过工厂的方式services.AddTransientIOrderService(p new DisposableOrderService());启动程序输出如下1 DisposableOrderService Disposed:12021664 DisposableOrderService Disposed:32106157 2 接口请求处理结束 DisposableOrderService Disposed:3165221 DisposableOrderService Disposed:13048313这里可以看到获取四个服务并且释放掉接下来把服务调整为自己创建并注册进去var service new DisposableOrderService(); services.AddSingletonIOrderService(service);同样我们也不会得到释放的输出也就是说通过这种方式注册容器不会管理对象的生命周期如何识别这个区别呢在控制器中注入 IHostApplicationLifetime 接口这个接口的作用是用来管理整个应用程序的生命周期它有一个方法 StopApplication也就是说它可以把整个应用程序关掉接着通过手工关掉的方式看一下应用程序关闭时会不会把单例对象释放掉[HttpGet] public int Get([FromServices] IOrderService orderService,[FromServices] IOrderService orderService2,[FromServices]IHostApplicationLifetime hostApplicationLifetime,[FromQuery]bool stop false) {Console.WriteLine(1);// HttpContext.RequestServices// 是当前请求的一个根容器// 应用程序根容器的一个子容器// 每个请求会创建一个容器using (IServiceScope scope HttpContext.RequestServices.CreateScope()){// 在这个子容器下面再创建一个子容器来获取服务var service scope.ServiceProvider.GetServiceIOrderService();var service2 scope.ServiceProvider.GetServiceIOrderService();}Console.WriteLine(2);if (stop){hostApplicationLifetime.StopApplication();}Console.WriteLine(接口请求处理结束);return 1; }首先用自己创建对象的方式var service new DisposableOrderService(); services.AddSingletonIOrderService(service);启动程序输入 ?stoptruehttps://localhost:5001/weatherforecast?stoptrue输出如下... DependencyInjectionScopeAndDisposableDemo.exe (进程 16884)已退出代码为 0。 要在调试停止时自动关闭控制台请启用“工具”-“选项”-“调试”-“调试停止时自动关闭控制台”。 按任意键关闭此窗口. . .如果单例由容器来管理切换回普通注册方式services.AddSingletonIOrderService, DisposableOrderService();启动程序输入 ?stoptruehttps://localhost:5001/weatherforecast?stoptrue输出如下Application is shutting down... 接口请求处理结束 DisposableOrderService Disposed:23399238对象释放应用程序退出这里说明单例的服务都是注册在根容器里面根容器的释放意味着需要在整个应用程序退出时释放这个时候它会释放自己所管理的所有的 IDisposable 的对象这里面有一个非常需要注意的坑假如把服务注册成瞬时的services.AddTransientIOrderService, DisposableOrderService();然后又在根容器里面去获取这个对象var s app.ApplicationServices.GetServiceIOrderService();这意味着在根容器去持续的创建 IOrderService但是由于根容器只会在应用程序整个退出时回收也就意味着这些对象会一直积累在应用程序内调整控制器不获取 IOrderService[HttpGet] public int Get([FromServices]IHostApplicationLifetime hostApplicationLifetime,[FromQuery]bool stop false) {if (stop){hostApplicationLifetime.StopApplication();}return 1; }仅仅在根容器获取一次var s app.ApplicationServices.GetServiceIOrderService();这样运行起来每次请求点击刷新的话整个输出是不会有内容的因为我们没有在子容器里面去获取对象但实际上当我们退出的时候会发现确实有一个实例被释放掉了DisposableOrderService Disposed:7511460也就是说实现了 IDisposable 接口的服务如果时注册瞬时的又在根容器去做操作它会一直保持到应用程序退出的时候才能够被回收掉
http://www.pierceye.com/news/890697/

相关文章:

  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设
  • 如何用家用电脑做网站wordpress的伪静态
  • 东营市城市和建设管理局网站网络基础知识点
  • 怎么制作网站链接转发视频网页游戏开服表怎么取消
  • 360网站seo怎么做北京商场关闭通知
  • 连云港建设公司网站工程承包信息
  • 互动网站制作建设医院网站服务
  • 用asp做网站span增城高端网站建设
  • 数据交易网站开发网站流量超
  • 做短视频网站用哪家cms湖州高端网站设计
  • 做肝病科网站张家港高端网站制作
  • 深圳外网站建设网站的策划分析
  • 电商网站建设机构移动通网站建设
  • 网站内容不被收录企业网站制作的市场
  • 个人网站 jsp 域名空间电商线上推广
  • 网站开发实战视频教程西安网站建设定
  • 有没有99块钱做网站邢台做网站的公司哪家好?
  • 物流网站设计与实现制作公司内部募捐网站
  • 新西兰注册公司做网站局域网网站