0

我正在编写一个处理来自客户端的请求的 Windows 服务。为了听我在 While 循环中使用 BeginAcceptTcpClient 的请求。

while (stopListenning == false)
{
    tcpListener.BeginAcceptTcpClient(new AsyncCallback(RequestHandler), tcpListener);
}

我使用 Windows 任务管理器来监视 Windows 服务的进程,并且在没有向 Windows 服务发送请求的情况下检测到内存不断增加。我尝试了很多方法来解决这个问题,但没有结果。请大家帮助我。

4

2 回答 2

0

阅读这篇文章http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx后,我自己解决了这个问题

问题是我没有使用 ManualResetEvent,因为我对它有误解。现在一切正常。

于 2013-09-18T03:15:42.517 回答
0

您有一个 while 循环,通过 new AsyncCallback(...)

这将在每次循环执行时增加内存。如果 tcpListener 保留对每个 AsyncCallback 实例的引用,那么这些将不会被垃圾收集,并且您的内存使用量只会不断增长。如果没有维护引用,那么最终 GC 将启动并且您的内存使用量将减少。

于 2013-09-18T02:52:10.287 回答