如何使用docker在dotnet上正常closures?

有没有办法正常closures在DOCKER中运行的DOTNET CORE应用程序? 如果是,我应该听哪个活动?

我想要的是取消请求我想将我的取消令牌传递给当前的方法,并推迟他们正在工作的closures。

寻找与dotnet核心相关的示例代码,参考链接等,而不是通用信息

更新这个问题并不是Docker容器的重复, 即使在.net核心控制台应用程序中使用Console.ReadLine()也是如此,因为我没有立即退出问题。 我需要挖掘事件像Windows.SystemsEvents.SessionEnding和依靠Console.CancelKeyPress和/或实现WebHostBuilder()不适合该法案。

System.Console有一个名为CancelKeyPress的事件。 我相信当sigint事件传入到dotnet中时会触发这个事件。

 System.Console.CancelKeyPress += (s,e) => { /* do something here */}; 

使用2.0.0-preview2-006497我做了一些testing,现在当Docker发送一个SIGTERM / SIGINT到容器时, AssemblyLoadContext.Default.Unloading被触发。

示例代码如下所示:

 System.Runtime.Loader.AssemblyLoadContext.Default.Unloading += ctx => { // code here... }; 

有关详细信息,另请参阅此问题: https : //github.com/aspnet/Hosting/issues/870

在.NET Core 2.0中,您可以使用AppDomain.CurrentDomain.ProcessExit事件,该事件在Docker中的Linux上正常工作。 AssemblyLoadContext.Default.Unloading可能工作,甚至在.NET Core 2.0之前。