【发布时间】:2013-04-01 13:50:28
【问题描述】:
我正在.net 项目中实现连接池 我的asp.net 项目中有一个.asmx 网络服务,用于获取connectionID。 我添加了一个类 TicketManager.cs,我在下面使用它制作了单例
private static readonly TicketManager TicketManagerInstance=new TicketManager();
public static TicketManager GetTicketManagerInstance()
{
return TicketManagerInstance;
}
。使用我的 web 服务,我执行操作来获取票证。但是当我在 IIS 中部署这个项目时,我得到了不同的结果。我有一个 web 方法来列出 USE 中的当前连接。当我尝试得到这个时。我看到不同的结果根据不同的请求。我怀疑我的单例类可能会被多次实例化。你能提出一些建议吗? 我应该如何让它在多线程环境中工作?
【问题讨论】:
-
您的静态实例将用于所有请求。那是你的意图吗?另外,为什么那会是线程安全的?
-
而且,线程安全,为什么?默认情况下,世界不是线程安全的。
-
我正在用这个实现池化。这个类用于给用户一张票,用于访问我们网站中的一些链接。我们对此有限制(例如,如果它是 80 则第 81 位用户不会能够访问。如果它不是线程安全的,如果第 80 位和第 81 位用户同时尝试获取票证,我们可能会遇到问题)。所以我需要它是线程安全的。
-
但是你没有做任何事情来忍受安全。我发现应用程序池重启有问题。那时你会有两份单身人士的副本。
-
最后我正在使用只有 1 个工作进程的应用程序池并将票证保存在数据库中。感谢您的帮助
标签: asp.net web-services singleton asmx