| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Закрытие приложения |
| Автор: nerezus 28.6.2006, 08:40 | ||||||
нажимаю крестик, мессаджбокс появляется, форма закрввается, но приложение не останавливается. в параллельном потоке запущен сервер, слушающий сокет. Как убить приложение без лишних вопросов? И еще:
пишет, что нету такого класса. А этот класс я подключил в виде отдельного файла. Когда он объявлен внутри метода - то все работает. Дотнет 2. |
| Автор: Prehistorik 28.6.2006, 09:25 | ||
|
| Автор: mr.DUDA 28.6.2006, 09:56 |
| Приложение остаётся работать, пока есть хотя бы один поток. Если совсем лениво (или не получается), можно с пом. WinAPI грохнуть процесс - TerminateProcess. |
| Автор: nerezus 28.6.2006, 11:17 | ||||||
И вот это почти из книжки(добавил ThreadedTcpSrvr(bool newThread), startThreaded(), stopServe())
пытаюсь собрать - оно рутается
смысл этого ругательства я не понял, хотя все слова по отдельности понятны... |
| Автор: Mad 28.6.2006, 11:29 | ||||||||
у тебя переменная определена как protected а класс как private замени на
или
на
|
| Автор: nerezus 28.6.2006, 11:47 | ||
| спасибо, объявления класса как паблик решило проблему ) но вот эта штука:
вешает программу. если убрать client.Stop();, то следующая строчка не дает результатов, хотя условие верно. Продолжает дальше принимать соединения. |
| Автор: Mad 28.6.2006, 12:09 |
| вопервых AcceptTcpClient надо вызывать в слушующем потоке, а не в отдельном вовторых NetworkStream закрывать ненадо, только TcpClient и наконец в третьих, еще надо сохранять указатели клиентские потоки, и при закрытии приложения, останавливать их тоже вообще-то структура многопотокового сервера выглядет намного сложней |
| Автор: nerezus 28.6.2006, 12:30 | ||
Блин, тут на форуме часто джаваскрипт не загружается и кнопок нету, в том числе и "Отправить".
многопоточность работает ) до этого написал на дотнете калькулятор и мейлсендер, потом забросил... сейчас хотел поэксперементировать с потоками и сетью, но видать слишком сложно для меня ) кстати, нету готовых классов многопоточных серверов? может я зря мучаюсь? Например как в питоне есть ThreadedTcpServer(или похожее название), и там надо только метод handle() добавить... |
| Автор: Mad 28.6.2006, 13:14 |
посмотри на www.codeproject.com, там точно было |
| Автор: jfx 28.6.2006, 14:57 |
| На codeproject я находил только очень примитивные сервера. Есть реализации нормально сервера в коммерческих компонентах, например IP*Works! от /n software inc. http://www.nsoftware.com/products/component/ipdaemon.aspx А я в таком случае просто посылаю всем потокам сигнал что нужно завершаться (просто устанавливаю глобальный булевый флаг). Потаму что не всегда полезно делать Abort, а так посылаю сигнал, потоки доделывают что нужно и завершаются. А в основном потоке после посылки сигнала жду завершения потоков и тогда закрываю приложение. |
| Автор: arilou 28.6.2006, 16:19 |
| А можно просто при создании потока выставить для него свойство IsBackground = true, и тогда этот поток будет грохнут автоматом при Application.Exit(). |
| Автор: nerezus 29.6.2006, 12:59 | ||
А коммерческие понятно платные? Значит опять не получилось дотнет поучить =( |