多线程以及网络

confach 2003-10-16 09:31:58
本人遇到一个技术问题,要求就是多个客户端如果同时访问服务器,不会有问题,我的方法是采用异步非阻塞,部分代码如下:
private static ManualResetEvent Done = new ManualResetEvent(false);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

try
{
socket.Bind(endPoint);
socket.Listen(10);//allow a queues of 5 connections
exeProc.Items.Add("Waiting for a connecting...");
_threadProcess=new Thread(new ThreadStart(Target));
_threadProcess.Start();
while(!_threadProcess.IsAlive);

} catch(Exception err)
{
exeProc.Items.Add(err.Message);
}

}

private void Target()
{
while(true)//listen loop
{
Done.Reset();//Sets the state of the specified event to nonsignaled.
socket.BeginAccept(new AsyncCallback (CallAccept),socket);
Done.WaitOne();
}
}

private void CallAccept(IAsyncResult iAsyResult)
{
Done.Set();
....
}
我用BeginAccept,EndAccept,还有BeginReceive等等
问题出在当我把done。Reset()和Done。WaitOne()去掉后所占用内存很大,大概170M,想想这怎么行,我要同时运行几个阿,但是如果不去掉,那么只能一个一个的执行,各位有什么意见。如果我的方法不当,请各位多加指点。谢谢

...全文
24 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sogasoga 2003-11-05
  • 打赏
  • 举报
回复
定!顶!
wjhs 2003-10-17
  • 打赏
  • 举报
回复
帮你找高手。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧