gpt4 book ai didi

asp.net-core-2.0 - 在 BuildWebHost 周围使用 "using"语句?

转载 作者:行者123 更新时间:2023-12-05 06:35:20 24 4
gpt4 key购买 nike

在 ASP.NET Core 2.x 中,最佳做法是在应用程序的主入口点调用一个名为 BuildWebHost 的方法(请参阅 MSDN 文章 Hosting in ASP.NET Core ):

public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}

IWebHostIDisposable,因此本着成为优秀 .NET 公民的精神,是否建议将 BuildWebHostusing 语句?

public class Program
{
public static void Main(string[] args)
{
using (var host = BuildWebHost(args))
{
host.Run();
}
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}

最佳答案

没有。按原样使用它。 IWebHost 实现了 IDisposable,因为它可以并且可以以其他方式使用,您可能需要手动处理它。然而,在这里的上下文中,它是整个套件和 kaboodle。它在程序启动时创建,并一直使用到程序结束。

作为一个稍微好一点的解释,理解释放资源的唯一原因是在应用程序继续运行时将它们从内存中删除。最终,无论您是否处置,GC 都会清除废弃的资源,但您永远不应该依赖 GC 在您之后进行清理。如果您不再需要某个资源,您可以处置它,以减少应用程序的持续资源负载,同样,在它继续运行时

当您的应用程序结束时,所有关联的资源都会随之消失,因为它们都与流程相关联。如果没有进程,那么 RAM 中就没有任何剩余。因此,为什么没有必要在此上下文中手动处理 IWebHost。因为在应用程序结束之前都需要它,而当应用程序结束时,它将完全消失,无论如何,手动处置不会给你带来任何好处。

关于asp.net-core-2.0 - 在 BuildWebHost 周围使用 "using"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com