我正在使用C#并为一组服务器代码添加线程。它的作用是接受任何客户端,如果有任何挂起的连接,然后创建一个客户端句柄线程来处理来自客户端的消息。
问题是我的代码在客户端连接并创建线程时抛出异常。我已经调试了足够的知道线程本身,但我不知道为什么。我以为我正确处理了它。代码在不处理线程的情况下工作,所以我不确定出了什么问题: 快速注意:NetTcp_Acpt是一个List< TcpClient>和NetTcp_Thrd是一个列表<线程>。
try {
if ( NetTcp_Sock.Pending() == true ) {
//Asynchronously accept the client;
TcpClient myClient = await NetTcp_Sock.AcceptTcpClientAsync();
NetTcp_Acpt.Add( myClient );
int myID = NetTcp_Acpt.Count;
//Create new thread to handle client data;
Thread myThread = new Thread( () => Net_Handle( myClient , Convert.ToString( myID ) , myID ) );
myThread.Name = Convert.ToString( myID );
NetTcp_Thrd.Add( myThread );
myThread.Start();
Console.WriteLine( "Client: " + Convert.ToString( myID ) + " connected!" );
}
} catch( Exception ex ) {
//NOTE:Exception always thrown, result of: Client Threads on lines 31 to 34;
//Excepion needs fixing;
Console.WriteLine( ex.ToString() );
}
答案 0 :(得分:1)
确保在添加客户端之前已初始化NetTcp_Acpt
集合。
初始化意味着:
NetTcp_Acpt = new System.Collections.Generic.List<TcpClient>();
这就是您的代码中缺少的内容。