这是我的代码。 我已编写此代码以在分离的线程中从客户端接收消息。我想问的是,与使用异步回调方法相比,这是否正常。
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);
}
}
答案 0 :(得分:0)
与使用异步回调方法相比,这是否正常?
“精细”根据什么标准或观点?
恕我直言,网络I / O应始终使用异步方法完成。 .NET提供了大量可行的选项,并且它们比为每个套接字专用一个线程更有效。
这就是说,除了你应该删除Thread.Sleep(1000);
的无意义调用,以及ThreadStart
委托类型而不是MethodInvoker
的异常使用(后者被记录为更高效),从你认为它应该适用于少量套接字和客户端的角度来看,你所拥有的代码看起来很“精细”。