![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
нажимаю крестик, мессаджбокс появляется, форма закрввается, но приложение не останавливается. в параллельном потоке запущен сервер, слушающий сокет. Как убить приложение без лишних вопросов? И еще:
пишет, что нету такого класса. А этот класс я подключил в виде отдельного файла. Когда он объявлен внутри метода - то все работает. Дотнет 2. |
||||||
|
|||||||
| Prehistorik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 30.5.2006 Где: СПб Репутация: 2 Всего: 3 |
--------------------
Есть только один бог - Ассемблер, и С - пророк его. |
|||
|
||||
| Mad |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 1 Всего: 19 |
nerezus, анимательно проверь соответсвия namespace
а лучше выложи полный код (все определения), а то по этим кусочкам можно только догадки строить Добавлено @ 09:51
немного не так (Thread.Stop такого просто нет
неплохо еще былобы вставить проверку на текущие состояние (может она уже сама вывалилась |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Приложение остаётся работать, пока есть хотя бы один поток. Если совсем лениво (или не получается), можно с пом. WinAPI грохнуть процесс - TerminateProcess.
-------------------- ![]() |
|||
|
||||
| nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
И вот это почти из книжки(добавил ThreadedTcpSrvr(bool newThread), startThreaded(), stopServe())
пытаюсь собрать - оно рутается
смысл этого ругательства я не понял, хотя все слова по отдельности понятны... |
||||||
|
|||||||
| Mad |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 1 Всего: 19 |
у тебя переменная определена как protected а класс как private замени на
или
на
|
||||||||
|
|||||||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
спасибо, объявления класса как паблик решило проблему )
но вот эта штука:
вешает программу. если убрать client.Stop();, то следующая строчка не дает результатов, хотя условие верно. Продолжает дальше принимать соединения. |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 1 Всего: 19 |
вопервых AcceptTcpClient надо вызывать в слушующем потоке, а не в отдельном
вовторых NetworkStream закрывать ненадо, только TcpClient и наконец в третьих, еще надо сохранять указатели клиентские потоки, и при закрытии приложения, останавливать их тоже вообще-то структура многопотокового сервера выглядет намного сложней |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
Блин, тут на форуме часто джаваскрипт не загружается и кнопок нету, в том числе и "Отправить".
многопоточность работает ) до этого написал на дотнете калькулятор и мейлсендер, потом забросил... сейчас хотел поэксперементировать с потоками и сетью, но видать слишком сложно для меня ) кстати, нету готовых классов многопоточных серверов? может я зря мучаюсь? Например как в питоне есть ThreadedTcpServer(или похожее название), и там надо только метод handle() добавить... |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 1 Всего: 19 |
посмотри на www.codeproject.com, там точно было |
|||
|
||||
| jfx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 18.10.2004 Репутация: 1 Всего: 1 |
На codeproject я находил только очень примитивные сервера. Есть реализации нормально сервера в коммерческих компонентах, например IP*Works! от /n software inc. http://www.nsoftware.com/products/component/ipdaemon.aspx
А я в таком случае просто посылаю всем потокам сигнал что нужно завершаться (просто устанавливаю глобальный булевый флаг). Потаму что не всегда полезно делать Abort, а так посылаю сигнал, потоки доделывают что нужно и завершаются. А в основном потоке после посылки сигнала жду завершения потоков и тогда закрываю приложение. Это сообщение отредактировал(а) jfx - 28.6.2006, 15:02 |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А можно просто при создании потока выставить для него свойство IsBackground = true, и тогда этот поток будет грохнут автоматом при Application.Exit().
|
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
А коммерческие понятно платные? Значит опять не получилось дотнет поучить =( |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |