Como sabemos, ese hilo es creado y administrado por la clase Thread. Entonces, la clase Thread proporciona una propiedad conocida como propiedad IsBackground para verificar si el hilo dado se está ejecutando en segundo plano o en primer plano. Si el valor de IsBackground se establece en true , significa que el subproceso es un subproceso de fondo. O si el valor de IsBackground se establece en false , significa que el subproceso es un subproceso en primer plano.
Sintaxis:
public bool IsBackground { get; set; }
Valor de retorno: esta propiedad devuelve verdadero si este subproceso es o va a convertirse en un subproceso de fondo; de lo contrario, devuelve falso .
Excepción: esta propiedad dará ThreadStateException
si el subproceso está muerto.
Ejemplo 1:
// C# program to illustrate the // concept of Background thread using System; using System.Threading; class GFG { // Main method static void Main(string[] args) { // Creating and initializing thread Thread mythr = new Thread(mythread); // Name of the thread is Geek thread mythr.Name = "Geek thread"; mythr.Start(); // IsBackground is the property // of Thread which allows thread // to run in the background mythr.IsBackground = true; Console.WriteLine("Main Thread Ends!!"); } // Static method static void mythread() { // Display the name of the // current working thread Console.WriteLine("In progress thread is: {0}", Thread.CurrentThread.Name); Thread.Sleep(1000); Console.WriteLine("Completed thread is: {0}", Thread.CurrentThread.Name); } }
Producción :
In progress thread is: Geek thread Main Thread Ends!!
Ejemplo 2:
// C# program to illustrate the // concept of IsBackground property using System; using System.Threading; class Geeks { int J; public Geeks(int J) { this.J = J; } // This method will display // the counting of background // and foreground threads public void display() { for (int i = 0; i < J; i++) { Console.WriteLine("{0} count: {1}", Thread.CurrentThread.IsBackground ? "Background Thread" : "Foreground Thread", i); Thread.Sleep(250); } Console.WriteLine("{0} finished its counting.", Thread.CurrentThread.IsBackground ? "Background Thread" : "Foreground Thread"); } } // Driver Class class GFG { // Main method static void Main() { // Creating and initializing // objects of Geeks class // Creating and initializing // objects of Thread class Geeks obj1 = new Geeks(5); Thread fthr = new Thread(new ThreadStart(obj1.display)); Geeks obj2 = new Geeks(10); Thread bthr = new Thread(new ThreadStart(obj2.display)); // bthr thread is a background // thread because the value of // IsBackground property is true bthr.IsBackground = true; fthr.Start(); bthr.Start(); } }
Producción :
Foreground Thread count: 0 Background Thread count: 0 Background Thread count: 1 Foreground Thread count: 1 Background Thread count: 2 Foreground Thread count: 2 Background Thread count: 3 Foreground Thread count: 3 Background Thread count: 4 Foreground Thread count: 4 Background Thread count: 5 Foreground Thread finished its counting.
Nota:
- Un subproceso es un subproceso de fondo o un subproceso de primer plano. Los subprocesos en segundo plano son similares a los subprocesos en primer plano, excepto que los subprocesos en segundo plano no evitan que finalice un proceso.
- Una vez que todos los subprocesos en primer plano que pertenecen a un proceso han finalizado, Common Language Runtime finaliza el proceso. Cualquier subproceso de fondo restante se detiene y no se completa.
- El subproceso principal o el subproceso principal de la aplicación y todos los subprocesos creados por el constructor de la clase Thread se ejecutan en primer plano (es decir, su propiedad IsBackground devuelve falso).
- Los subprocesos del grupo de subprocesos y todos los subprocesos que ingresan al entorno de ejecución administrado desde código no administrado se ejecutan en segundo plano (es decir, su propiedad IsBackground devuelve verdadero).
Referencia:
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA