Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Thread.IsBackground

 

Publicado: octubre de 2016

Obtiene o establece un valor que indica si un subproceso es o no un subproceso en segundo plano.

Espacio de nombres:   System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

public bool IsBackground {
	get;
	[HostProtectionAttribute(SecurityAction.LinkDemand, SelfAffectingThreading = true)]
	set;
}

Valor de propiedad

Type: System.Boolean

true si el subproceso es un subproceso en segundo plano o va a convertirse en un subproceso en segundo plano; en caso contrario, false.

Exception Condition
ThreadStateException

El proceso está inactivo.

Un subproceso es un subproceso en segundo plano o en un subproceso en primer plano. Subprocesos en segundo plano son idénticos a los subprocesos de primer plano, salvo que los subprocesos en segundo plano no impiden que un proceso de terminación. Una vez terminados todos los subprocesos de primer plano que pertenecen a un proceso, common language runtime termina el proceso. Los subprocesos en segundo plano restantes se detienen y no se completan.

De forma predeterminada, los siguientes subprocesos se ejecutan en primer plano (es decir, su IsBackground propiedad devuelve false):

  • El subproceso principal (o subproceso de aplicación principal).

  • Todos los subprocesos creados mediante una llamada a un Thread constructor de clase.

De forma predeterminada, ejecuten los siguientes subprocesos en segundo plano (es decir, su IsBackground propiedad devuelve true):

  • El subproceso del grupo de subprocesos, que son un grupo de subprocesos de trabajo mantenida por el tiempo de ejecución. Puede configurar el trabajo de grupo y la programación de subprocesos en el grupo de subprocesos mediante el ThreadPool clase.

    System_CAPS_noteNota

    Operaciones asincrónicas basadas en tareas se ejecutan automáticamente en el grupo de subprocesos.

  • Todos los subprocesos que entran en el entorno de ejecución administrado desde código no administrado.

En el ejemplo siguiente se compara el comportamiento de los subprocesos de primer plano y fondo. Crea un subproceso en primer plano y un subproceso en segundo plano. El subproceso en primer plano mantiene el proceso se ejecuta hasta que finalice su for bucle y finaliza. Sin embargo, como se muestra en el resultado del ejemplo, dado que el subproceso en primer plano ha terminado de ejecutarse, el proceso se termina antes de que el subproceso en segundo plano ha completado su ejecución.

using System;
using System.Threading;

class Example
{
    static void Main()
    {
        BackgroundTest shortTest = new BackgroundTest(10);
        Thread foregroundThread = 
            new Thread(new ThreadStart(shortTest.RunLoop));

        BackgroundTest longTest = new BackgroundTest(50);
        Thread backgroundThread = 
            new Thread(new ThreadStart(longTest.RunLoop));
        backgroundThread.IsBackground = true;

        foregroundThread.Start();
        backgroundThread.Start();
    }
}

class BackgroundTest
{
    int maxIterations;

    public BackgroundTest(int maxIterations)
    {
        this.maxIterations = maxIterations;
    }

    public void RunLoop()
    {
        for (int i = 0; i < maxIterations; i++) {
            Console.WriteLine("{0} count: {1}", 
                Thread.CurrentThread.IsBackground ? 
                   "Background Thread" : "Foreground Thread", i);
            Thread.Sleep(250);
        }
        Console.WriteLine("{0} finished counting.", 
                          Thread.CurrentThread.IsBackground ? 
                          "Background Thread" : "Foreground Thread");
    }
}
// The example displays output like the following:
//    Foreground Thread count: 0
//    Background Thread count: 0
//    Background Thread count: 1
//    Foreground Thread count: 1
//    Foreground Thread count: 2
//    Background Thread count: 2
//    Foreground Thread count: 3
//    Background Thread count: 3
//    Background Thread count: 4
//    Foreground Thread count: 4
//    Foreground Thread count: 5
//    Background Thread count: 5
//    Foreground Thread count: 6
//    Background Thread count: 6
//    Background Thread count: 7
//    Foreground Thread count: 7
//    Background Thread count: 8
//    Foreground Thread count: 8
//    Foreground Thread count: 9
//    Background Thread count: 9
//    Background Thread count: 10
//    Foreground Thread count: 10
//    Background Thread count: 11
//    Foreground Thread finished counting.

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: