【发布时间】:2012-01-10 18:09:50
【问题描述】:
这里有问题……
我有这个应用程序,它创建各种自定义 AppDomain,每个应用程序域执行一个程序集及其依赖项,如插件、分离的程序集、操作数据库、自己的资源等。
应用程序运行良好一段时间,但突然,它锁定...进程没有死,它只是冻结,我在它上面运行了一个远程调试器,在线程窗口上我可以看到每个线程,它们的状态是“正在运行”(不是“解冻”),但是在同一个地方,没有执行……我可以暂停并运行调试,它仍然在同一个地方。
代码上没有锁、同步锁、监视器,加载应用程序域的代码非常简单,没什么大不了的。
就像我说的,它可以工作,但过了一会儿,它就锁定了..
对这个环境有什么想法吗?它已经让我发疯了!
如果需要任何代码,我会提供。谢谢。
【问题讨论】:
-
这里的信息太少了。应用程序锁定时线程在做什么?堆栈跟踪和围绕这些的一些代码 sn-ps 可能会有所帮助。
-
当你说它操纵数据库时..数据库是否共享相同的连接字符串..??如果是这样,那么也许您正在创建许多新的连接字符串,并且一段时间后连接池已满..我会检查您正在实现某些东西的新实例并且没有正确释放它们的地方..也许将东西包装在一个如有必要,使用(){}..只是一个建议,没有看到实际代码。
-
线程完全没有做任何事情,它们的状态是“正在运行”,但实际上并未运行。它被冻结了。并不是每个进程都会操作数据库。
-
我有一个最近的线索,也许它会有所帮助,跟踪应用程序我收到这条消息:“无法评估表达式。函数:MyProcess.ExecuteDll(),线程:0x2438
Unable to评估表达式。" 这发生在应用程序及时停止之前。 -
线程所在的“相同位置”是什么?
标签: c# .net vb.net multithreading appdomain