請問一下... 小弟寫了個 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)