Použití vláken a dělení na vláknaUsing threads and threading

Pomocí technologie .NET můžete psát aplikace, které provádějí více operací současně.With .NET, you can write applications that perform multiple operations at the same time. Operace s potenciálním provozem jiných operací se můžou spouštět v samostatných vláknech, což je proces , který se označuje jako vícevláknové nebo volné podprocesy.Operations with the potential of holding up other operations can execute on separate threads, a process known as multithreading or free threading.

Aplikace, které používají multithreading, mají větší reakci na uživatelský vstup, protože uživatelské rozhraní zůstává aktivní jako úlohy náročné na procesory spouštěné v samostatných vláknech.Applications that use multithreading are more responsive to user input because the user interface stays active as processor-intensive tasks execute on separate threads. Multithreading je také užitečné při vytváření škálovatelných aplikací, protože je možné přidat vlákna při zvýšení zatížení.Multithreading is also useful when you create scalable applications, because you can add threads as the workload increases.

Poznámka

Pokud potřebujete větší kontrolu nad chováním vláken aplikace, můžete spravovat vlákna sami.If you need more control over the behavior of the application's threads, you can manage the threads yourself. Počínaje .NET Framework 4 se však vícevláknové programování značně zjednodušilo pomocí tříd System.Threading.Tasks.Parallel a System.Threading.Tasks.Task, Paralelní LINQ (PLINQ), nové třídy souběžných kolekcí v oboru názvů System.Collections.Concurrent a nový programovací model. který je založen na konceptu úkolů, nikoli na vláknech.However, starting with the .NET Framework 4, multithreaded programming is greatly simplified with the System.Threading.Tasks.Parallel and System.Threading.Tasks.Task classes, Parallel LINQ (PLINQ), new concurrent collection classes in the System.Collections.Concurrent namespace, and a new programming model that is based on the concept of tasks rather than threads. Další informace naleznete v tématu paralelní programování a Task PARALLEL Library (TPL).For more information, see Parallel Programming and Task Parallel Library (TPL).

Postupy: vytvoření a spuštění nového vláknaHow to: Create and start a new thread

Vytvoříte nové vlákno vytvořením nové instance třídy System.Threading.Thread a zadáním názvu metody, kterou chcete spustit v novém vlákně konstruktoru.You create a new thread by creating a new instance of the System.Threading.Thread class and providing the name of the method that you want to execute on a new thread to the constructor. Chcete-li spustit vytvořené vlákno, zavolejte metodu Thread.Start.To start a created thread, call the Thread.Start method. Další informace a příklady najdete v článku vytváření vláken a předávání dat v čase spuštění a Reference k rozhraní API Thread.For more information and examples, see the Creating threads and passing data at start time article and the Thread API reference.

Postupy: zastavení vláknaHow to: Stop a thread

Chcete-li ukončit provádění vlákna, použijte metodu Thread.Abort.To terminate the execution of a thread, use the Thread.Abort method. Tato metoda vyvolává ThreadAbortException ve vlákně, ve kterém je vyvolána.That method raises a ThreadAbortException on the thread on which it's invoked. Další informace naleznete v tématu zničení vláken.For more information, see Destroying threads.

Počínaje .NET Framework 4 můžete použít System.Threading.CancellationToken k kooperativnímu zrušení vlákna.Beginning with the .NET Framework 4, you can use the System.Threading.CancellationToken to cancel a thread cooperatively. Další informace naleznete v tématu zrušení ve spravovaných vláknech.For more information, see Cancellation in managed threads.

Použijte metodu Thread.Join k tomu, aby volající vlákno čekalo na ukončení vlákna, ve kterém je metoda vyvolána.Use the Thread.Join method to make the calling thread wait for the termination of the thread on which the method is invoked.

Postupy: pozastavení nebo přerušení vláknaHow to: Pause or interrupt a thread

Použijte metodu Thread.Sleep k pozastavení aktuálního vlákna po zadanou dobu.You use the Thread.Sleep method to pause the current thread for a specified amount of time. Blokované vlákno lze přerušit voláním metody Thread.Interrupt.You can interrupt a blocked thread by calling the Thread.Interrupt method. Další informace najdete v tématu pozastavení a přerušení vláken.For more information, see Pausing and interrupting threads.

Vlastnosti vláknaThread properties

Následující tabulka uvádí některé vlastnosti Thread:The following table presents some of the Thread properties:

VlastnostProperty PopisDescription
IsAlive Vrátí true, pokud bylo vlákno spuštěno a dosud nebylo ukončeno normálně nebo přerušeno.Returns true if a thread has been started and has not yet terminated normally or aborted.
IsBackground Získá nebo nastaví logickou hodnotu, která označuje, zda se jedná o vlákno na pozadí.Gets or sets a Boolean that indicates if a thread is a background thread. Vlákna na pozadí jsou jako vlákna na popředí, ale vlákno na pozadí nezabrání procesu v jeho zastavení.Background threads are like foreground threads, but a background thread doesn't prevent a process from stopping. Po zastavení všech vláken na popředí, která patří do procesu, ukončí modul CLR (Common Language Runtime) proces voláním metody Abort na vláknech na pozadí, které jsou stále aktivní.Once all foreground threads that belong to a process have stopped, the common language runtime ends the process by calling the Abort method on background threads that are still alive. Další informace naleznete v tématu vlákna v popředí a na pozadí.For more information, see Foreground and Background Threads.
Name Získá nebo nastaví název vlákna.Gets or sets the name of a thread. Nejčastěji se používá ke zjišťování jednotlivých vláken při ladění.Most frequently used to discover individual threads when you debug.
Priority Získá nebo nastaví hodnotu ThreadPriority, která je používána operačním systémem k určení priorit plánování vláken.Gets or sets a ThreadPriority value that is used by the operating system to prioritize thread scheduling. Další informace naleznete v tématu plánování vláken a ThreadPriority reference.For more information, see Scheduling threads and the ThreadPriority reference.
ThreadState Získá ThreadState hodnotu obsahující aktuální stavy vlákna.Gets a ThreadState value containing the current states of a thread.

Viz také:See also