我正在开发一个客户端-服务器程序。我使用 C# 编程语言和 .net framework 4。在那里,每当新客户端连接到服务器时,服务器都会创建新线程来处理每个客户端。如果其中一个客户端断开连接,则控制此断开连接客户端的线程也将停止(终止)。我不知道如何在多个线程中停止这个特定的线程。我的程序的伪代码将是这样的:
服务器端程序:
Thread t;
private void form1_load(object sender, EventArgs e)
{
startserver();
}
void startserver()
{
t = new Thread(waitclientconnection);
t.start();
}
void waitclientconnection()
{
//namedpipeserverconnection code
//waitforclientconnection
if (clientOne is connected)
{
startserver(); //create new thread to wait connection for next client
}
//object and variable that created within the thread
Clientprofile cp = new Clientprofile();
String clientstate = "....";
if (clientOne sends "close" message)
{
//the thread that controls ClientOne will be killed <-- This is the point that I would like to solve
}
}
我承认这个程序有点复杂,但目前我只有这种方式来实现我的程序。我找到了一些建议声明布尔变量来控制线程停止或使用while循环运行的解决方案。但是在我的程序中,这种方式可以停止整个线程并且无法为新连接的客户端创建新线程。此外,我还想知道在每个特定线程中创建的变量和对象是否也可以在该线程停止时从内存中销毁。想象一下,如果在一小时内连接了 100 个客户端,而目前只有 10 个客户端在连接。我只想在内存中只为这 10 个客户端保留对象和变量。这个问题很复杂,但我相信你们所有人都能解决并提出任何建议。真心希望大家给点建议。。。