Já nejsem natolik programátorsky zdatný, takže Vašemu řešení nerozumím, tak se zeptám možná hloupě: Njedřív jen pro kontrolu: 1) Dispose bych podle měl volat na třídu, která jakkoli používá socket? 2) Ten socket bych měl ukončit pomocí metody close atp? 3) Pokud přestávám používat třídu, která má více vláken, měl bych se postarat o to, abych ty vlákna ukončil? Vaše řešení z Vašeho prvního příspěvku toto asi dělá, ale nerozumím následujícímu: 1) WaitTillThreadsEnd(); jak toto naimplementovat? Jak se dozvím, kdy ty thready skončili? Pomocí Threadstate? A Ukončí se opravdu ihned po tom, co vyskočí s cyklu while nebo to řeší něco, co já nemohu ovlivnit (ála garbage collector?) Pokud se ukončí opravdu hned a já se to dozvím pomocí threadstate, pak je to za mne OK :) 2) Viz můj poslední dotaz - jak se vypořádat s tím, že pokud už jsem uvnitř toho cyklu "while (!CloseThreads){}" - a dojde ke změně v hlavním vláknu na "closeThreads = True," tak mohu čekat: za A: Neomezeně dlouho, pokud není nastaven timeout - to je rozhodně špatně, že ano? za B: Např 5 sekund, pokud je nastaven timeout 5 sec - toto právě nevím jestli je korektní chování nebo ne... Na toto se ptám, protože zkrátka neznám běžné konvence a když dělám něco poprvé, tak nechci, aby to byla (naprostá :) ) prasárna. Na bod 1 se ptám, protože neznám přesně toto chování a než něco naimplementuji, tak bych tomu rád i rozuměl. Ještě jednou díky za Váš čas a snahu!
|