IIS 7上奇怪的多线程问题

本文关键字:多线程 问题 IIS | 更新日期: 2023-09-27 18:02:41

该网站在其bin文件夹中有一个.dll,其中有一个多线程方法。这是一个相当快的过程,(半秒),所以超时不是问题。

在我们的开发版IIS 7上,它运行得很顺利。所有的编程机器都是一样的。但是,在生产IIS7上,它无法启动参数化线程下面是代码行:

ParameterizedThreadStart start = new ParameterizedThreadStart(queryDb);
Thread thrd = new Thread(start);
thrd.Start(ndb);

这是很标准的东西。我的问题是,有没有人知道IIS7中有什么东西可以阻止它产生一个线程,就像上面的

IIS 7上奇怪的多线程问题

可能的原因:如果你没有正确关闭旧的线程,并且有一个32位的机器,你很快就会耗尽地址空间来分配堆栈给新线程。

注意:考虑使用线程池(即QueueWorkItem http://msdn.microsoft.com/en-us/library/kbf0f1ct.aspx)来执行一次性任务。或者考虑使用异步页面,如果处理实际上是页面呈现的一部分(而不是等待线程完成)。

另一个可能的原因是:代码需要完全信任,您在本地测试中拥有这种信任,但在服务器上却没有。您是否使用任何安全关键或不安全的代码?