Interrupt Método
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

Thread.Interrupt (Método) ()

 

Interrumpe un subproceso que se encuentra en estado de subproceso WaitSleepJoin.

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

[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]
public void Interrupt()

Exception Condition
SecurityException

El llamador no tiene la correspondiente SecurityPermission.

Si este subproceso no está actualmente bloqueada en una espera, la suspensión o el estado de combinación, se interrumpirá cuando comienza a continuación bloquear.

ThreadInterruptedException se produce en el subproceso interrumpido, pero no hasta que el subproceso se bloquea.Si el subproceso nunca se bloquea, nunca se produce la excepción, y por lo tanto, el subproceso podría finalizar sin ser interrumpido.

En el ejemplo de código siguiente se muestra el comportamiento de un subproceso en ejecución cuando se interrumpe y queda posteriormente bloqueado.

using System;
using System.Security.Permissions;
using System.Threading;

class ThreadInterrupt
{
    static void Main()
    {
        StayAwake stayAwake = new StayAwake();
        Thread newThread = 
            new Thread(new ThreadStart(stayAwake.ThreadMethod));
        newThread.Start();

        // The following line causes an exception to be thrown 
        // in ThreadMethod if newThread is currently blocked
        // or becomes blocked in the future.
        newThread.Interrupt();
        Console.WriteLine("Main thread calls Interrupt on newThread.");

        // Tell newThread to go to sleep.
        stayAwake.SleepSwitch = true;

        // Wait for newThread to end.
        newThread.Join();
    }
}

class StayAwake
{
    bool sleepSwitch = false;

    public bool SleepSwitch
    {
        set{ sleepSwitch = value; }
    }

    public StayAwake(){}

    public void ThreadMethod()
    {
        Console.WriteLine("newThread is executing ThreadMethod.");
        while(!sleepSwitch)
        {
            // Use SpinWait instead of Sleep to demonstrate the 
            // effect of calling Interrupt on a running thread.
            Thread.SpinWait(10000000);
        }
        try
        {
            Console.WriteLine("newThread going to sleep.");

            // When newThread goes to sleep, it is immediately 
            // woken up by a ThreadInterruptedException.
            Thread.Sleep(Timeout.Infinite);
        }
        catch(ThreadInterruptedException e)
        {
            Console.WriteLine("newThread cannot go to sleep - " +
                "interrupted by main thread.");
        }
    }
}

SecurityPermission

for advanced operations on threads.Associated enumeration: SecurityPermissionFlag.ControlThread.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar:
© 2016 Microsoft