Question

Salut, j'ai le code de test suivant:

class Program
{
    static void Main(string[] args)
    {
        Thread t = new Thread(Work);
        t.Start();
        Thread.Sleep(1000);
        t.Abort();
        Thread.Sleep(1000);
        t.Abort();
        Thread.Sleep(1000);
        t.Abort();
        t.Join();
        Console.WriteLine("End");
    }

    static void Work()
    {
        int i = 0;
        while (i<10)
        {
            try
            {
                while(true);
            }
            catch(ThreadAbortException)
            {
                Thread.ResetAbort();
            }

            Console.WriteLine("I will come back!");
            i++;
        }
    }
}

Chaque fois, lorsqu'il y a un abord, thread.resetabort () sera exécuté. Je me demande ce que fait cette réinitialisation. Parce que lorsque je l'exécute, j'ai vu la sortie suivante: je reviendrai! Je reviendrai! Je reviendrai! Et je n'ai pas vu la sortie "fin" - il semble que ce programme ne se soit pas terminé du tout. Est-ce que tu sais pourquoi? Merci!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top