处理如果没有足够的可用内存来启动此线程c#

时间:2014-07-13 18:58:57

标签: windows multithreading out-of-memory c#-3.0

我有一个系统,它会向应用程序的每个请求启动一个新线程。 如果应用程序收到数百个请求,则可能没有足够的内存可用于启动新线程,因此会引发异常。

我想知道处理这种情况的理想机制。 比如,如果应用程序收到大量请求,那么如果没有足够的内存或活动线程数达到最大值,那么我将延迟处理其他请求。

但我不知道如何实现这一点。

1 个答案:

答案 0 :(得分:1)

简易解决方案:增加线程池限制。这实际上是可行的,尽管这些日子过时了。

更彻底的解决方案:使用SemaphoreSlim来限制并发异步活动请求的数量。确保异步等待。如果你同步等待,你会在等待时再次刻录线程。等待异步后,您可以恢复正常的同步阻塞处理。这只需要很少的代码更改。

最全面的解决方案:完全实现异步处理。这样你永远不会用完线程。