在 BuildWebHost 周围使用 "using" 语句?
Use "using" statement around BuildWebHost?
在 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();
}
IWebHost
是 IDisposable
,所以本着成为优秀 .NET 公民的精神,是否建议用 using
语句包围 BuildWebHost
?
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.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();
}
IWebHost
是 IDisposable
,所以本着成为优秀 .NET 公民的精神,是否建议用 using
语句包围 BuildWebHost
?
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
。因为在应用程序结束之前都需要它,而当应用程序结束时,它就会完全消失,无论如何,手动处理不会给你带来任何好处。