作者KENyroj (难得一身鸡蛋糕...)
看板C_Sharp
标题[问题] Socket 资源无法释放... @@
时间Tue Jan 29 10:54:59 2008
请问一下... 小弟写了个 Socket Server (TCP) 的程式...
可是它却无法把 TcpClient 的资源放掉...
我用 Profiler 看 TcpClient 的实体从来没有减少过... NetworkStream 也是...
请各位大大帮帮看一下问题出在哪里... 谢谢 ^^;;
---
//这边是宣告一个 TcpListener 并且收到一个连线就丢到 ThreadPool 里面去工作
TcpListener m_TcpServer = new TcpListener(System.Net.IPAddress.Any, m_Port);
m_TcpServer.Start();
while(true)
{
TcpClient AcceptClient = m_TcpServer.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), AcceptClient);
}
// 这里是 ThreadPool 所呼叫的 HandleRequest 方法
private void HandleRequest(object Param)
{
using (TcpClient Client = (TcpClient)Param)
{
using (NetworkStream NetStr = Client.GetStream())
{
// 中略
NetStr.Close();
}
Client.Close();
}
}
---
我目前想到有可能的原因就是在 while 里宣告的 AcceptClient 没有被 Dispose
但是它被丢进 ThreadPool 里执行完应该要会自己 Dispose 啊...
不知有没有大大有什麽指教... 谢谢各位先~~
__yroj
--
KOKIA - ありがとう
もしも もう いちど 假使再一次
あなた に あえる なら 遇见你的话
たった ひとこと 只有一句话
つたえたい 想告诉你
http://home.so-net.net.tw/kenyroj/share/arigatou.swf
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.5.97
※ 编辑: KENyroj 来自: 60.248.5.97 (01/29 10:55)
※ 编辑: KENyroj 来自: 60.248.5.97 (01/29 10:56)