【发布时间】:2021-12-18 10:08:22
【问题描述】:
我正在使用服务集合类来构建用于我的 lambda 的服务提供者。我真的不想在每次调用函数处理程序时都处理掉我的所有单例,但我确实想在 lambda 旋转时处理掉它们。
据我了解,如果没有这个,一些非托管连接可能无法正确关闭。为了避免这个问题,我添加了一个析构函数,它在服务提供者上调用 .Dispose()。
我如何确保 lambda 足够优雅地退出,以至于我的析构函数每次都会被调用,我是否理解它可以对非托管资源有益?
示例代码:
public class Function {
private readonly ServiceProvider _provider;
public Function() {
_provider = new ServiceCollection.AddXyz();
}
~Function() {
_provider.Dispose();
}
}
处理程序被省略,但只知道它通过服务集合容器打开数据库连接、rabbit mq 连接等,我不想将它包装在具有范围的 using 语句中,因为如果有多个在 lambda 的一个生命周期内传入的调用,我希望使用相同的连接。
【问题讨论】:
-
如果您要添加一些代码,则更容易准确理解您的要求。
-
我添加了一个例子
标签: c# amazon-web-services aws-lambda