Hmmz, ik heb een Thread gemaakt, en ik wil deze Thread natuurlijk op een gegeven moment weer laten stoppen. Daarvoor gebruik ik dus <thread>.Abort() voor. Volgens de documentatie wordt er dan een ThreadAbortException gegooid (
). Deze Exception catch ik dus binnen m'n void voor die thread, maar hij komt nooit aan op het stukje catch code. Heel vaag. ffies wat code:
De code om de thread aan te maken.
De code om de thread te aborten.
De StartServer void:
Als ik dus een breakpoint zet op het regeltje: InterlinkXPServer.Stop(); dan breakt ie dus nergens. Hoe kan dit?
De code om de thread aan te maken.
code:
1
2
3
| ServerThread = new Thread(new ThreadStart(StartServer)); ServerThread.Name = "Interlink XP Listening Thread"; ServerThread.Start(); |
De code om de thread te aborten.
code:
1
| ServerThread.Abort(); |
De StartServer void:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| private void StartServer()
{
try
{
InterlinkXPServer = new TcpListener(ServerSettings.ServerPort);
InterlinkXPServer.Start();
while (true)
{
TcpClient tempClient = InterlinkXPServer.AcceptTcpClient();
int newid = Connections.Add(new Connection(tempClient, this));
((Connection)Connections[newid]).SendWelcome();
}
}
catch (System.Threading.ThreadAbortException)
{
InterlinkXPServer.Stop();
foreach (Connection con in Connections)
{
con.SendLine("421 Service is shutting down. Closing control connection.");
Connections.Remove(con);
}
return;
}
} |
Als ik dus een breakpoint zet op het regeltje: InterlinkXPServer.Stop(); dan breakt ie dus nergens. Hoe kan dit?