小弟我最近做一个c/s结构的软件,当接收多个客户端连接时用到线程的问题,我对线程的理解也不是很模糊,都是自学的,网上讲得也没看懂。各位大侠帮看看,我要怎么修改
    //开启服务器
        private void button1_Click(object sender, EventArgs e)
        {
            if (watchflag == 1)
            {
                MessageBox.Show("服务器已经启动", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {            
                
                watchflag = 1;
                textBox1.Text += "服务器于"+System.DateTime.Now.ToLocalTime()+"启动!\r\n";
                Thread mythread = new Thread(new ParameterizedThreadStart(Form_sever.accListen));
                
            }
        }//监听
        public void accListen()
        {            //初始化
            IPEndPoint Sever = new IPEndPoint(HostIP, Port);
            newsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            //绑定服务器并开始进行监听
            newsocket.Bind(Sever);
      
            //接受服务器连接
            while (true)
            {
                newsocket.Listen(25);
                Socket accsocket = newsocket.Accept();
            }
                    }
前面也没有啥内容,关于委托小弟实在是不知道要怎么弄,有高手给指点下,最好给下代码,也让小弟学习一下

解决方案 »

  1.   

    Thread mythread = new Thread(new ParameterizedThreadStart(Form_sever.accListen));
    mythread.Start();
      

  2.   

    楼上的是个问题,但是没看见其他有什么问题啊
    给你个连接里边有好多socket的和多线程配合处理的
    http://www.cnblogs.com/wzd24/
      

  3.   

    参考 http://www.cnblogs.com/wzd24/
    里边源码很多
      

  4.   

    我也知道线程的开始,不小心删掉了,不是这里的错
    “acclisten”的重载均于委托“ParameterizedThreadStart”不匹配,有这个错误,不知道是为什么
      

  5.   

    你定义的方法和ParameterizedThreadStart委托的签名不匹配啊 
    你开线程的时候用ThreadStart这个委托,这个不需要参数正好和你的方法accListen匹配