我有这个代码在C#中连接UDPClient,请可以任何一个告诉我它没关系?

时间:2015-11-09 11:52:23

标签: c#

这是我的代码。 我已编写此代码以在分离的线程中从客户端接收消息。我想问的是,与使用异步回调方法相比,这是否正常。

private void button1_Click(object sender, EventArgs e)
    {
        //Start Receiving Messages from Clients
        remoteEP = new IPEndPoint(IPAddress.Any, 4510);
        serverThread = new Thread(new ThreadStart(ServerThreadMethod));
        serverThread.Start();
    }

    private void ServerThreadMethod()
    {
        while (true)
        {
            var data = udpServer.Receive(ref remoteEP); // listen on port 11000
            string rec_data = Encoding.UTF8.GetString(data);

            this.BeginInvoke((ThreadStart)delegate()
            {
                lblStatus.Text = rec_data + " -> receive data from " + remoteEP.ToString();
            }
            );
            Thread.Sleep(1000);
        }
    }

1 个答案:

答案 0 :(得分:0)

  

与使用异步回调方法相比,这是否正常?

“精细”根据什么标准或观点?

恕我直言,网络I / O应始终使用异步方法完成。 .NET提供了大量可行的选项,并且它们比为每个套接字专用一个线程更有效。

这就是说,除了你应该删除Thread.Sleep(1000);的无意义调用,以及ThreadStart委托类型而不是MethodInvoker的异常使用(后者被记录为更高效),从你认为它应该适用于少量套接字和客户端的角度来看,你所拥有的代码看起来很“精细”。