только не new Task, а Task.Run. и await не забывай.
И ConfigureAwait(false)
Async/Await have been introduced with C# 5.0 and .NET Framework 4.5
Task t = new Task(() => {
Console.WriteLine("RUN "+j);
Task.Delay(10000).Wait();
Console.WriteLine("end " + j);
});
t.Start();
Хотя под каждый сокет(каждого клиента) при подключении создается отдельный thread, который висит и ждет сообщений от клиента (ведь
using (var stream = new NetworkStream(socket))
блокирует поток). Ну соотвественно на 100+ клиентов, которые там постоянно висят создано 100+ тредов. Ну с этими проблем нет.Крч выхода 3, которые я вижу. Первый апгрейд железа. Второй уменьшение количества постоянно подключенных клиентов, хотя это навер невозможно. И третий, то что нужно было сделать с самого начала и предусмотреть этот момент, больше кешей у клиентов, меньше запросов, убрать с сервера ORM ибо еще тот тормоз, ну удобно же!
Хотя есть еще такая идея, при подключении для каждого клиента, помимо потока для принятия сообщений от клиентов, создавать еще один поток для отправки сообщений в котором будет какаой нибудь стек сообщений, куда мы можем добавлять сообщения для отправки клиенту и этот поток будет заниматься их отправкой этому клиенту ну и у каждого клиента такой поток.
Потому-что основная проблема как мне кажется, есть 100 клиентов у 5 из них херовый интернет. Когда я создаю таску и в цикле пытаюсь отправить всем сообщений, когда итерация доходит до клиентов с херовым интернетом, на них тратится очень много времени и все эти таски висят. А если у каждого клиента будет поток который занимается отправкой сообщений именно ему, то всем клиентам с быстрым интернетом сообщения будут доставлятся мгновенно, а тем у которых херовый интернет, пускай висят стеки сообщений, когда-то они да обработаются, главное они не будут тормозить остальных. Ну это так мысли...