Esta documentación está archivada y no tiene mantenimiento.

Thread.IsBackground (Propiedad)

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; set; }
/** @property */
public boolean get_IsBackground ()

/** @property */
public void set_IsBackground (boolean value)

public function get IsBackground () : boolean

public function set IsBackground (value : boolean)

No aplicable.

Valor de propiedad

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

Tipo de excepciónCondición

ThreadStateException

El subproceso está inactivo.

Un subproceso es bien un subproceso en segundo plano o bien un subproceso en primer plano. Los subprocesos en segundo plano son idénticos a los subprocesos en primer plano, a excepción de que los subprocesos en segundo plano no impiden que un proceso finalice. Cuando todos los subprocesos de primer plano que pertenecen a un proceso han finalizado, Common Language Runtime finaliza el proceso. Se detienen todos los subprocesos de fondo restantes y no se finalizan.

En el ejemplo de código siguiente se compara el comportamiento de subprocesos en primer plano y en segundo plano. Se crean un subproceso en primer plano y otro en segundo plano. El subproceso en primer plano mantiene el proceso en ejecución hasta que completa su bucle while. Una vez finalizado el subproceso en primer plano, el proceso se termina antes de que el subproceso en segundo plano complete su bucle while.

using System;
using System.Threading;

class Test
{
    static void Main()
    {
        BackgroundTest shortTest = new BackgroundTest(10);
        Thread foregroundThread = 
            new Thread(new ThreadStart(shortTest.RunLoop));
        foregroundThread.Name = "ForegroundThread";

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

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

class BackgroundTest
{
    int maxIterations;

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

    public void RunLoop()
    {
        String threadName = Thread.CurrentThread.Name;
        
        for(int i = 0; i < maxIterations; i++)
        {
            Console.WriteLine("{0} count: {1}", 
                threadName, i.ToString());
            Thread.Sleep(250);
        }
        Console.WriteLine("{0} finished counting.", threadName);
    }
}

import System.*;
import System.Threading.*;
import System.Threading.Thread;

class Test
{
    public static void main(String[] args)
    {
        BackgroundTest shortTest = new BackgroundTest(10);
        Thread foregroundThread = new Thread(new ThreadStart(shortTest.RunLoop));

        foregroundThread.set_Name("ForegroundThread");

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

        backgroundThread.set_Name("BackgroundThread");
        backgroundThread.set_IsBackground(true);
        foregroundThread.Start();
        backgroundThread.Start();
    } //main
} //Test

class BackgroundTest
{
    private int maxIterations;

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

    public void RunLoop()
    {
        String threadName = Thread.get_CurrentThread().get_Name();

        for (int i = 0; i < maxIterations; i++) {
            Console.WriteLine("{0} count: {1}", threadName, String.valueOf(i));
            Thread.Sleep(250);
        }

        Console.WriteLine("{0} finished counting.", threadName);
    } //RunLoop
} //BackgroundTest

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0

XNA Framework

Compatible con: 1.0
Mostrar: