当前位置: 首页 > 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.zqtcl.cn/news/936328/

相关文章:

  • 青海省建设工程造价网站电商设计网站培训
  • 软件开发过程的阶段划分优化手机访问网站速度
  • 知名网站建设公司做分销网站好吗
  • 服务器php网站打不开潍坊网站模板在哪
  • 网站管理员要干些什么开发公司专票
  • 陕西省建设银行网站6网站都有什么类型的
  • 哪里有做网站设计全国室内设计学校
  • 简单的网站php开发教程账户竞价托管哪里好
  • dede网站搬家教程浙江省住房和城乡建设部网站
  • 网站分页符怎么做做网站是什么意思
  • 影视网站开发工程师店铺装修
  • ip138查询网站网址域名ip网站外包制作
  • 网站建设需求怎么写网站seo快速排名优化
  • 网站后台文章添加成功 不显示注册安全工程师是干什么的
  • 网页制作网站建设百度网站推广费用多少钱
  • 长沙网站建设软件wordpress加菜单
  • 网站建设教育板块wordpress $pagenow
  • 岳阳手机网站建设自己可以给公司做网站吗
  • 旅游网站建设目的关于建设网站的需求分析
  • 手机可以建立网站吗自己造网站
  • 厦门建网站哪家好手机编程网站
  • 网站搭建后台奥门网站建设
  • 电子商务网站免费模板展示型网站与营销型网站
  • 除了红动中国还有哪些设计网站宁波建网站哪家
  • 网站的建设费用预算策划书wdcp网站备份
  • 济南制作公司网站网站设计的实例
  • 网站建设需要的文案一个网站的后台怎么做
  • 电影网站建设模板营销方式都有哪些
  • 书店商城网站建设方案未央免费做网站
  • 北京房产网北京二手房企业网站seo方案案例