gpt4 book ai didi

c# - Unity 中的 PerThreadLifetimeManager

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:11 24 4
gpt4 key购买 nike

在 Unity PerThreadLifetimeManager 文档中,我读到:“This lifetime manager does not dispose the instances it holds”。引用:http://msdn.microsoft.com/en-us/library/ff647854.aspx

那么,如果我使用的是 ThreadPool,这是否意味着在 ThreadPool 的线程上使用 Unity 解析的对象在返回到池之前不会在该线程中完成的工作结束时被释放?

有什么模式或想法可以确保对象确实得到处理并从线程池中获得干净的线程?

谢谢!

最佳答案

这取决于终身经理的类型。 PerThreadLifetimeManager 为每个线程维护一个实例。提供了六种类型的终身管理器,但这并不意味着如果它们不适合您,您就不能创建自己的。

您似乎想要 TransientLifetimeManager每次调用提供一个新实例。您可以在您的工作线程中调用 Resolve,使用该实例,并在该方法退出之前处理它。

我不确定您是否可以创建一个生命周期管理器,它会以某种方式自动知道您的线程已完成执行。确保发生这种情况的最佳方法是创建一个方法包装器,它 1) 从 Unity 获取实例(使用 TransientLifetimeManager),执行传入实例的 Action (您的实际工作方法),然后处理该实例退出前的实例。然后,您可以通过将代码传递给这个在工作线程上运行的包装器来执行您的代码。您只需编写一次 Resolve() 和 Dispose() 代码,即可在所有地方重复使用。

关于c# - Unity 中的 PerThreadLifetimeManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846021/

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