Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Proprietà IsBackground

Proprietà Thread.IsBackground

Ottiene o imposta un valore che indica se il thread viene eseguito in background.

Spazio dei nomi: System.Threading
Assembly: mscorlib (in 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)

Valore proprietà

Viene restituito true se il thread è oppure sarà un thread eseguito in background; in caso contrario false.

Tipo di eccezioneCondizione

ThreadStateException

Il thread è inattivo.

Un thread può essere eseguito in background oppure in primo piano. I thread in background sono identici a quelli in primo piano con una sola eccezione: i primi infatti non impediscono a un processo di terminare. Dopo che terminano tutti i thread in primo piano appartenenti a un processo, Common Language Runtime termina il processo. Gli eventuali thread in background rimanenti vengono interrotti e non si completano.

Nell'esempio di codice riportato di seguito viene messo a confronto il comportamento dei thread in background con quello dei thread in primo piano. Vengono creati un thread in primo piano e un thread in background. Il thread in primo piano mantiene il processo in esecuzione fino al completamento del ciclo while. Al termine del thread in primo piano, il processo viene terminato prima che il thread in background abbia completato il ciclo 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 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft