🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21977

Re: TcpListener, jak zatrzymać

#21977
From: Teodor
Date: Mon, 10 Jan 2011 10:21
44 lines
2810 bytes
Użytkownik "yamma" <yamma@wp.pl> napisał w wiadomości 
news:igaqct$7eq$1@inews.gazeta.pl...
> 3P wrote:
>> Dnia 08-01-2011 o 15:17:05 yamma <yamma@wp.pl> napisał(a):
>>
>>> Męczę się już z tym parę dni i nawet guglanie nie pomaga. Mam
>>> TcpListenera, który nasłuchuje na jakimś tam porcie. On sobie chodzi
>>> w osobnym wątku. Wszystko pięknie bangla, odpowiada na połączenia,
>>> tworzy nowe sockety, itd. Problem pojawia się gdy chcę zakończyć
>>> pracę tego TcpListenera. Jak to zrobić? Z poziomu jego wątku nie
>>> mogę tego zrobić bo blokuje tenże wątek na metodzie AcceptTcpClient,
>>> natomiast jeśli próbuję wywołać metodę Stop z innego wątku to
>>> aplikacja się wywala z błędem "Operacja blokująca została przerwana
>>> przez wywołanie funkcji WSACancelBlockingCall".
>>> yamma
>>
>> Nigdy sam z tego nie korzystałem, ale czy pierwsze dwa linki z
>> google'a ci nie pomogą?
>>
>> http://stackoverflow.com/questions/365370/proper-way-to-stop-tcplistener
>> http://stackoverflow.com/questions/31871/wsacancelblockingcall-exception
>
> Tak, czytałem to. Po mojemu, metoda AcceptTcpClient powinna uzyskać status 
> deprecated bo jedynym sposobem zamknięcia jest zabicie wątku. A 5 
> przykazanie mówi wyraźnie "Nie zabijaj". :-) Jedyne rozwiązanie to 
> BeginAcceptTcpClient z callbackiem. Generalnie z socketami w .NET jest 
> niezła jazda. Np. próba połaczenia się z nieistniejącym adresem/portem 
> powoduje wywalenie wyjątku co jest dla mnie kompletnie niezrozumiałe bo to 
> nie jest żadne wyjątkowe zachowanie. Konieczność obsługi takiego wyjątku 
> kompletnie rozpieprza całą koncepcję i logikę aplikacji.
> yamma

Wywala wątek nawet wtedy gdy masz
try
{
}
catch (Exception ex)
{
}

?

----
ts 
Technical Details
Message-ID: <igemon$12ab$1@news.mm.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!news.mm.pl!not-for-mail
References: <ig9rlh$26s$1@inews.gazeta.pl> <op.voz51xs2msp0fz@mcs> <igaqct$7eq$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!news.mm.pl!not-for-mail
From: "Teodor" <to.jest.lipny.mail@wp.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: TcpListener, jak zatrzymać
Date: Mon, 10 Jan 2011 11:21:48 +0100
Organization: Multimedia Polska SA
Lines: 45
Message-ID: <igemon$12ab$1@news.mm.pl>
References: <ig9rlh$26s$1@inews.gazeta.pl> <op.voz51xs2msp0fz@mcs> <igaqct$7eq$1@inews.gazeta.pl>
NNTP-Posting-Host: host-89-228-39-17.elk.mm.pl
Mime-Version: 1.0
X-Trace: news.mm.pl 1294655064 35147 89.228.39.17 (10 Jan 2011 10:24:24 GMT)
X-Complaints-To: abuse@multimedia.pl
NNTP-Posting-Date: Mon, 10 Jan 2011 10:24:24 +0000 (UTC)
In-Reply-To: <igaqct$7eq$1@inews.gazeta.pl>
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Windows Mail 6.0.6002.18197
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6002.18263
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit