![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
Доброе время суток всем жителям данного Форума!
Задача: Написать программу, которая при активирование кнопки будет прослушивать указанный порт. Проблема: Из-за того, что работает цикл программа становится не активна.
Задача: Сделать так, Чтобы при нажатие на кнопку(button1) активировалось прослушивание данного порта. Это сообщение отредактировал(а) MuForum - 14.10.2007, 01:57 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
весь код работы с сокетом вынеси в отдельный поток. Поток запускай по кажатию кнопки. Обновление контролов данными, полученными сокетом, делай через метод Invoke().
Поищи на форуме. Только не в общих вопросах, а в "Распределенные приложения и сеть" или "Разработка Windows Forms". Примеров достаточно. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#2, tol05 - Попользовался поиском, искал в двух разделах: "Распределённые приложения и сеть" и "Разработка Windows Forms".
- К сажалению толком ничего толком полезного не нашел =( Так же гуглил несколько дней, попутно нашел пару интересных статеек, думаю людям будет интересно почитать(По крайне мере советую всем новечкам в этом деле почитать): P.S. -> Если у кого-то есть возможность и желание, то было бы не плохо какой-то приметивный пример работы с сокетами на C# опубликовать, так как честно говоря у меня так и не вышло сделать, чтобы форма не зависала(Потом сделал в потоке как говорилось, но затем выключить не мог нормально, тоже форма зависала, Но уже при выключении)... - Вообщем хотелось бы помощи в этом деле более опытных людей. Это сообщение отредактировал(а) MuForum - 19.10.2007, 23:56 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
ок, допустим не нашел.
где это все, где код? ну а пока "более опытные люди" отдыхают, вот тебе то, о чем я говорил:
-------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#, tol05 - Ещё вопрос возник, вот как в потоке добавлять текст ты показал, я пытался тоже самое сделать для фокуса и Select, но у меня не вышло =(
P.S. -> Но при попытке добавить новый текст в richTextBox1, компилятор подвисает, и дебагер ругается... Это сообщение отредактировал(а) MuForum - 21.10.2007, 15:56 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
# for all - Проблему решил, спасибо корейским парням.
Это сообщение отредактировал(а) MuForum - 21.10.2007, 16:33 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
MuForum, передай
что можно и так писать:
![]() А вообще я смотрю у тебя много сильных связей получается между потоком и формой. Не очень удобно будет сопровождать такой код, модифицировать. Ты бы попробовал через события поработать. Вынеси код потока в отдельный класс, объяви в нем события, привяжи к ним обработчики формы. Когда в потоке что-то происходит - возбуждай событие, а форма это событие обработает сама. Т.о. у тебя будет независимый код логики потока, который время от времени сообщает (всем, кто подпишется) о своем состоянии. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
MuForum |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
- Это нашел на одном из корейских Форумах тему, там было в заголовке текст: "richTextBox1.Invoke", ну я и начал разбирать код, затем увидел этот вариант и уже переделал под себя =)
- Да, я делаю "ConnectServer", программу, которая будет связывать игроков с главным Сервером. На C++ я это уже реализовывал детом этого года, но сейчас хочу это реализовать на C# =) P.S. -> Если у тебя есть возможность и желание, ты не мог бы пожалуйста более развёрнуто объяснить, чтобы я хоть более немение понимал о чём речь и смог поискать в Интернете. - Заранее благодарен. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
||||||
|
|||||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
Что именно объяснить? Я вроде объяснил уже ![]() У тебя есть достаточно большой кусок кода, работающего в отдельном потоке. Есть форма для ввода-вывода результатов. Код потока выполняет много разнообразных действий, получается, что через каждые несколько строк нужно посылать форме ссобщения о чем-то. Вот и сделай в форме класс Worker, создавай его и инициализируй нужными ему данными. Давай ему команду работать. Он с твоими данными начнет работу, и, время от времени, будет возбужлать свои события "Я включился", "Я получил данные", "Я отправил данные" и т.п. А в форме, после создания экземпляра Worker, подпишись на его события. Вот и все. Отключил одну форму, подключил другую - от этого Worker не изменится. И аналогично с другой стороны - отключил Worker - форма дальше работает, только событий не получает и обработчиков своих не вызывает. вот и все, в принципе ![]() -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
shubert |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2006 Где: Mосква Репутация: нет Всего: нет |
Посмотрел ветку через события делается легче. если хочешь могу выложить свой клиент только работает с асинхронными вызовами, как только поступают данные вызываются события.
|
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
#10, shubert - Ну если есть возможность, то опубликую свою работу, что-то я для себя извлеку и может кому-то тоже понадобится.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
shubert |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2006 Где: Mосква Репутация: нет Всего: нет |
сейчас опубликую только у меня есть небольшие проблемы с реконектом. сейчас выложу и объясню.
В файле есть наработки по прокси но он еще тестовый. У меня возник такой вопрос. как можно убить событие если оно уже вызвалось и висит в памяти. Вообщем у меня если нету связи возникает событие и вызывается реконект к серверу. у меня есть метод Disconect который должен закрывать сокет если есть соединение или прекращать реконект если нету соединения. и вот получается что не могу остановить реконект. у меня есть глобальная переменная stopreconnect, которая отвечает за остановку реконекта. и получается что когда я останавливаю в один момент к этой переменной обращаются из двух потоков. Вообщем посмотрите. Присоединённый файл ( Кол-во скачиваний: 16 ) ![]() |
|||
|
||||
shubert |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2006 Где: Mосква Репутация: нет Всего: нет |
вот выкладываю код Добавлено через 3 минуты и 54 секунды Если найдете глюки сообщите. Присоединённый файл ( Кол-во скачиваний: 21 ) ![]() |
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: нет Всего: 2 |
MuForum, используй асинхронные сокеты
![]() И не надо будет тебе самому писать оберки на то, что в .нет уже давным давно завернуто за нас ![]() --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |