| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > TCP, Threading |
| Автор: uranpro 29.6.2009, 14:20 | ||
| Добрый день! Создал к/с приложение server:
после вызова TerminateServer() и закрытия гл. окна приложение остается в процессах дисп. задач и не закрывается. если у потока вызвать .Join() (вместо .Suspend ) , то приложение зависает, а если еще задать парам. TimeOut (.Join(10)), то приложение выводит ошибку: Необработанное исключение типа "System.Net.Sockets.SocketException" произошло в System.dll Дополнительные сведения: Операция блокирования прервана вызовом WSACancelBlockingCall в чем проблема ? Как мне отключить сервер и убить поток ? |
| Автор: PashaPash 29.6.2009, 14:53 |
| uranpro, используй асинхронные Begin/End для чтения данных, и Event (AutoResetEvent) для уведомления потока о необходимости завершения. По аналогии с http://forum.vingrad.ru/forum/topic-236917.html |
| Автор: uranpro 29.6.2009, 15:22 | ||
| Спасибо! т.е. получается, что мне нужно делать примерно так ? :
|
| Автор: PashaPash 29.6.2009, 16:45 | ||
uranpro, нет, тебе надо вместо clientStream.Read делать что-то вроде
и вызывать stopEvent.Set() вместо suspend. Тогда потоки будут дружно переставать ждать. |
| Автор: uranpro 29.6.2009, 17:41 |
| PashaPash, спасибо! =) |