Exportar (0) Imprimir
Expandir todo

Thread::IsBackground (Propiedad)

Actualización: noviembre 2007

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:
property bool IsBackground {
	bool get ();
	void set (bool value);
}
/** @property */
public boolean get_IsBackground()
/** @property */
public  void set_IsBackground(boolean value)

public function get IsBackground () : boolean
public function set IsBackground (value : boolean)

Valor de propiedad

Tipo: 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.

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 namespace System;
using namespace System::Threading;
ref class BackgroundTest
{
private:
   int maxIterations;

public:
   BackgroundTest( int maxIterations )
   {
      this->maxIterations = maxIterations;
   }

   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 );
   }

};

int main()
{
   BackgroundTest^ shortTest = gcnew BackgroundTest( 10 );
   Thread^ foregroundThread = gcnew Thread( gcnew ThreadStart( shortTest, &BackgroundTest::RunLoop ) );
   foregroundThread->Name =  "ForegroundThread";
   BackgroundTest^ longTest = gcnew BackgroundTest( 50 );
   Thread^ backgroundThread = gcnew Thread( gcnew ThreadStart( longTest, &BackgroundTest::RunLoop ) );
   backgroundThread->Name =  "BackgroundThread";
   backgroundThread->IsBackground = true;
   foregroundThread->Start();
   backgroundThread->Start();
}



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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft