Možnosti jsou v zásadě 3: 1. Vlákno natvrdo ukončit zavoláním Abort. Je to násilné řešení a nedoporučuji ho použít, pokud vlákno třeba pracuje se soubory atd., je netriviální ho abortnout tak, aby po sobě korektně uklidilo. 2. Pomocí nějakého synchronizačního primitiva řeknete vláknu, že se má ukončit. Vlákno uvnitř cyklu kontroluje, jestli neobdrželo požadavek na ukončení, a pokud ano, tak z cyklu vyskočí, uklidí a skončí. Je to asi řešení, doporučuji - to, kdy vlákno skončí, si regulujete sám. 3. Nastavte vlákno jako Background (dělá se to nějakou vlastností na té proměnné UD). Aplikace se po zavření okna ukončí a vlákno bude předčasně zrušeno (prvním způsobem, abortem, takže opět moc nedoporučuji). Pokud používáte .NET verze 4, můžete použít třídu Task, která slouží právě pro snazší implementaci těchto operací na pozadí a podporuje i předčasné rušení úkolů. Anebo použijte komponentu BackgroundWorker, která existuje už od .NETu verze 2, je to lepší, než se ručně patlat s vlákny, alespoň ze začátku.
|