gpt4 book ai didi

c# - 从另一个线程访问单例对象

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

我调用服务方法使用


ThreadPool.QueueUserWorkItem(o => service.Method(arg1, arg2));

服务有对象'loggingService',我正在使用 Spring.Net


private readonly ILoggingService loggingService = ObjectBuilder.GetObjectByName("LoggingService");

'LoggingService' 类是单例的。它将日志信息写入 log.txt。

当我尝试在此服务方法中调用 loggingService.Info("test") 时,出现异常:文件正被另一个进程占用。

如何访问日志服务?

最佳答案

你的单例显然是每线程。
您将需要一些跨线程传递 LoggingService 的方法。

例如,您可以在原始线程中设置service.loggingService

或者,您可以配置 Spring.Net 使其成为非线程本地单例。

请注意,您的 LoggingService 必须是线程安全的,否则您会在运行时遇到奇怪的错误。

关于c# - 从另一个线程访问单例对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946630/

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