![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
123456789igor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 27.3.2011 Репутация: нет Всего: нет |
Здравствуйте. Есть у меня такая проблема. Никак не могу понять как организовать выполнение 2х различных задач параллельно.
Есть клиент-серверное приложение. 1 метод отвечает за ожидание подключения и прием данных, 2ой метод отвечает за действия над принятыми данными. Выглядит это так
В результате хочу получить что-то вроде: запускаем приложение, метод Run запускается в новом потоке(выполнение программы идет дальше) программа крутится в цикле, пока какой-то клиент не подключится и не передаст данные. В случае если что-то получили запускаем метод isLogonOrRegistration в ещё 1ом потоке, при этом поток, в котором Run, работает и ждет следующего подключения. Никак не могу понять как это сделать Если у вас есть идея как эту логику реализовать по другому- напишите пожалуйста. собственно сама логика: Этот кусок кода- это сервер. Клиент вводит креды и отправляет их серверу(сервер может обрабатывать подключения множества клиентов) далее сервер проверяет верные креды ли ввел пользователь. Никак не получается сделать это параллельно. Прошу совета. |
|||
|
||||
Ilya81 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: нет Всего: 4 |
Хоть с использованием оператора await я ещё не полностью освоился, но всё равно полагаю, что ожидающий поток - не самое подходящее для него применение. Рекомендую использовать EventWaitHandle с автоматическим сбросом. Т. е. ожидающий поток считывает все данные, после чего, пройдя цикл, останавливается на WaitOne. При чьём-то подключении вызывается метод Set и данные вновь считываются, затем поток вновь ждёт. Примерно так:
Метод Loop выполняется в некотором потоке. |
|||
|
||||
WERITAS |
|
|||
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: 3 Всего: 5 |
Класс EventWaitHandle используют пул потоков CLR, а в нём их число ограниченно (по-моему 25). Поэтому если подключаться более 25-ти клиентов, то 26-му придётся ждать пока поток в пуле не освободится. Серверную часть приложения, работающего со множеством подключений, делают через Thread. А пул потоков используют для совершенно других задач по распараллеливанию!
-------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Как-то так...
Никаких асинков и эвейтов не надо тут, на вроде как. Это сообщение отредактировал(а) Cheloveck - 29.10.2014, 16:12 -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |