using System;
using System.Threading ;
namespace Recetas.CSharp .Cap04 .R0412
{
public sealed class UsoIsAlive
{
public static void Main( )
{
// Creación Thread:
Thread t = new Thread( Tarea) ;
// Inicio de la ejecución:
t.Start ( ) ;
// Ciclo while para comprobar el estado del thread.
// Determina cuándo ha finalizado y continua con la
// siguiente tarea:
while ( t.IsAlive ) { } // Uso ineficiente de ciclos de procesador
Console.WriteLine ( "\n Presione Enter para finalizar.\n " ) ;
Console.ReadLine ( ) ;
}
// Ejecución sobre un nuevo thread:
private static void Tarea( )
{
for ( int i = 1 ; i <= 5 ; ++ i)
{
Thread.Sleep ( 1000 ) ;
Console.WriteLine ( "Un segundo ha transcurrido..." ) ;
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwoKbmFtZXNwYWNlIFJlY2V0YXMuQ1NoYXJwLkNhcDA0LlIwNDEyCnsKICAgIHB1YmxpYyBzZWFsZWQgY2xhc3MgVXNvSXNBbGl2ZQogICAgewogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgICAgICB7CiAgICAgICAgICAgIC8vIENyZWFjacOzbiBUaHJlYWQ6CiAgICAgICAgICAgIFRocmVhZCB0ID0gbmV3IFRocmVhZChUYXJlYSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJbmljaW8gZGUgbGEgZWplY3VjacOzbjoKICAgICAgICAgICAgdC5TdGFydCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ2ljbG8gd2hpbGUgcGFyYSBjb21wcm9iYXIgZWwgZXN0YWRvIGRlbCB0aHJlYWQuCiAgICAgICAgICAgIC8vIERldGVybWluYSBjdcOhbmRvIGhhIGZpbmFsaXphZG8geSBjb250aW51YSBjb24gbGEgCiAgICAgICAgICAgIC8vIHNpZ3VpZW50ZSB0YXJlYToKICAgICAgICAgICAgd2hpbGUgKHQuSXNBbGl2ZSl7fSAvLyBVc28gaW5lZmljaWVudGUgZGUgY2ljbG9zIGRlIHByb2Nlc2Fkb3IKICAgICAgICAgICAgCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lICgiXG5QcmVzaW9uZSBFbnRlciBwYXJhIGZpbmFsaXphci5cbiIpOwogICAgICAgICAgICBDb25zb2xlLlJlYWRMaW5lICgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBFamVjdWNpw7NuIHNvYnJlIHVuIG51ZXZvIHRocmVhZDoKICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFRhcmVhKCkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDU7ICsraSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGhyZWFkLlNsZWVwKDEwMDApOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCJVbiBzZWd1bmRvIGhhIHRyYW5zY3Vycmlkby4uLiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9