multithreading - ASP.NET 网站中出现意外的第二个 AppDomain

标签 multithreading iis web-applications threadpool appdomain

我的一个类有静态构造函数,它将新的 GUID 分配给静态变量。 然后,我使用该变量作为我创建的文件夹名称,以在网站的生命周期内存储缓存信息。目标是当网站被回收或发生其他情况时具有不同的文件夹名称。

我的网站在 IIS7 中运行,并配置为最多有一个工作进程。回收被禁用。

我使用 ThreadPool.QueueUserWorkItem 异步发出多个并行数据库请求,然后使用 ManualResetEvent.WaitOne() 将这些调用合并回一个线程。我使用上面提到的文件夹来缓存这些请求的结果。

我的问题是,似乎在某个时刻我同时创建并运行了 2 个文件夹。我知道这意味着我获得 2 个 AppDomain,而不仅仅是 1 个。我不明白为什么我会获得第二个 AppDomain 以及我能做些什么来防止它发生。

最佳答案

像往常一样,答案很简单,并且在不同的领域 - 如果是泛型类,则对于类的每种类型,静态成员都是不同的。

http://www.codeproject.com/Articles/26514/Generic-Types-Don-t-Share-Static-Members

关于multithreading - ASP.NET 网站中出现意外的第二个 AppDomain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849968/

相关文章:

c++ - 多线程老板/ worker 模型的C/C++实现

c - 在单个整数上同步的最佳方法

IIS 7 为没有 https 绑定(bind)或分配证书的默认站点使用 SSL 证书

web-applications - 预编译 GWAN 应用程序

c++ - 我可以将 boost::threadpool 用作 'thread-safe queue' 吗?

java - Android 应用程序逻辑类 : service, 处理程序,...?

c# - 如何使用C#在IIS Express中创建虚拟目录

wcf - 访问 Web 服务的客户端的传入 IP 地址

java - 无法在 TFS 位置构建 ant 目标

java - 如何以编程方式查找/列出 J2EE 应用程序集群中的所有节点?