Article View: alt.pl.comp.lang.csharp
Article #21977Re: TcpListener, jak zatrzymać
From: Teodor
Date: Mon, 10 Jan 2011 10:21
Date: Mon, 10 Jan 2011 10:21
44 lines
2810 bytes
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-mailReferences:
<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