Just skimming over it but I see a few issues:
When you accept a new connection and begin reading data for it, you're creating a new thread which is going to tank performance and the max number of connections very quickly. You should really be using ReadAsync here which will handle multiple clients on fewer threads.
Code
Thread DataThread = new Thread(tThread);
DataThread.Start();
Additionally, I see you are using ReadAsync in the DataThread, so you're basically doubling up on thread resources which is going to use a crazy amount of resources. You're also handling all data as ASCII strings which is an issue for a number of reasons, you should consider binary serialization or if you're set on strings then UTF8 at least.
Code
DataLength = await CStream.ReadAsync(Cl.Buffer, 0, Cl.Buffer.Length);
Cl.DataQueString.Add(Encoding.ASCII.GetString(Cl.Buffer, 0, DataLength));
Cl.DataQueBuffer.Add(Cl.Buffer);
IncomingData((object)Cl, null);
You also have a number of Thread.Sleeps which is going to be a bottleneck once you start sending a lot of data.
I have to go for now, but I'll continue looking at it later - saw some issues with your ID generation, messbagebox in connection event, etc. which I'll address when I return.