powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Thread.Start() и OutOfMemoryException
10 сообщений из 10, страница 1 из 1
Thread.Start() и OutOfMemoryException
    #36158460
Делаю серверное приложение, в нем такой метод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
private void ServerListener()
        {
            try
            {
                Thread th = new Thread(delegate()
                                           {
                                               while (serverRunning)
                                               {
                                                   try
                                                   {
                                                       count++;
                                                       Socket acceptedSocket = Listener.Accept();
                                                       Thread ths = new Thread(delegate()
                                                                                   {
                                                                                       ConnectionAccepter(acceptedSocket);
                                                                                   });
                                                       ths.Start(); // Ошибка тут
                                                       PersonalThreadsAndConnections.Add(acceptedSocket, ths);
                                                   }
                                                   catch (Exception ex)
                                                   {
                                                       Message(ex.ToString() + " "+count.ToString());
                                                   }
                                               }
                                           });
                th.Start();
                PublicThreads.Add(th);
            }
            catch (Exception ex)
            {
                Objects.form1.textBox7.AppendText(ex.ToString() + " " + count.ToString());
            }
        }

Сделал клиентское приложение которое вайлом делает конекты на сервер, через некоторое время выскакивает сообщение об ошибке на сервере

авторSystem.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".
в System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
в System.Threading.Thread.Start()
в BM_Server.NetworkSocket.<ServerListener>b__0() в C:\Projects\C#\Server\Network\NetworkSocket.cs:строка 152 2453

Почему выскакивает это сообщение? в диспетчере задач сервер жрет всего 45 мегабайт.

И как это исправить, и что в моем случае посоветуете почитать.
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158461
причем на разных компьютерах ошибка в одной и той же строке, хотя при каждом покдлючении вызывается по два потока...
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158478
тьфу ты, сам в своем коде запутался, конечно же при входящих подключениях создается 1 поток (ну это итак видно)

выдерживает только 2453 одновременно подключенных клиентов, но как быть если нужно больше?
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158484
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любитель .NET технологийтьфу ты, сам в своем коде запутался, конечно же при входящих подключениях создается 1 поток (ну это итак видно)

выдерживает только 2453 одновременно подключенных клиентов, но как быть если нужно больше?

Не создавать отдельный поток на каждого клиента. Использовать event-driven programming, очереди и конечные автоматы.
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158597
andrei.t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любитель .NET технологий,

А Вам действительно надо одновременно 2500 запросов обрабатывать?

Дело в том, что System.Threading.Thread всего лишь обёртка над потоком ОС, который при создании выделяет память под собственный стек. В принципе размером стека можно манипулировать.
System.Threading.Thread.ctor . Хотя настоятельно не рекомендуется это делать.

В любом случае, рекомендую посмотреть на следующие вещи.

WCF Messaging
Spring.Messaging и
Spring.Messaging.EMS
SEDA
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158673
всем спасибо
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #36158761
если кому интересно

http://www.microsoft.com/Rus/Msdn/Magazine/2005/08/Winsock.mspx
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Thread.Start() и OutOfMemoryException
    #38919891
Kuzma Kuvardin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно дело в виртуальной памяти, кэше.
Почистить %temp%
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #38919894
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuzma Kuvardin,

за 6 лет наверное почистил уже
...
Рейтинг: 0 / 0
Thread.Start() и OutOfMemoryException
    #38919927
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhза 6 лет наверное почистил уже

Это ж зарегался специально, чтоб посоветовать :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Thread.Start() и OutOfMemoryException
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]