这是我的代码的一部分:
if (direccion.Equals("este"))
{
System.Timers.Timer trampa = new System.Timers.Timer();
trampa.Elapsed += new ElapsedEventHandler(OnTimedEvent);
trampa.Interval = 2000;
trampa.Enabled = true;
Console.WriteLine("Te encuentras con una granja abandonada, al entrar a la misma, te das cuenta que hay un cofre al final del pasillo principal.");
Console.WriteLine("Al acercarte al pasillo, sientes que el piso se mueve.");
Console.ReadLine();
}
}
问题是OnTimedEvent永远不会被执行,我认为计时器不起作用或者至少不正常。
private static void OnTimedEvent(object sender, ElapsedEventArgs e)
{
Random frn = new Random();
int ran = frn.Next(1, 4);
System.Timers.Timer caida = new System.Timers.Timer();
caida.Elapsed += new ElapsedEventHandler(OnTimedEvent2);
var direccion = Console.ReadLine();
Console.WriteLine("¡La madera del piso esta extremadamente podrida y se despedaza hacia un abismo!");
switch (ran)
{
case 1:
caida.Interval = 2500;
caida.Enabled = true;
Console.WriteLine("¡Salta hacia ADELANTE para evitar caerte!");
if (direccion.Equals("adelante"))
{
Console.WriteLine("Saltaste hacia adelante, sin embargo, estas atrapado entre el abismo y el cofre.");
Console.WriteLine("Despues de esperar varios dias por rescate, mueres por deshidratacion.");
Console.ReadLine();
caida.Enabled = false;
}
else
{
Console.WriteLine("No saltaste donde debias y caiste al abismo.");
Console.ReadLine();
}
break;
case 2:
caida.Interval = 2000;
caida.Enabled = true;
Console.WriteLine("¡Salta hacia ATRAS para evitar caerte!");
if (direccion.Equals("atras"))
{
Console.WriteLine("Saltaste hacia atrás, evitando asi caerte, sin embargo ahora no puedes alcanzar el cofre.");
Console.WriteLine("Vuelves a casa con las manos vacias.");
Console.ReadLine();
caida.Enabled = false;
}
else
{
Console.WriteLine("No saltaste donde debias y caiste al abismo.");
Console.ReadLine();
}
break;
case 3:
caida.Interval = 2000;
caida.Enabled = true;
Console.WriteLine("¡Salta hacia IZQUIERDA para evitar caerte!");
if (direccion.Equals("izquierda"))
{
Console.WriteLine("Saltas hacia la izquierda, sin embargo, ahora no puedes alcanzar el cofre.");
Console.WriteLine("Bordeas el agujero del abismo y luego te devuelves a casa con las manos vacias.");
Console.ReadLine();
caida.Enabled = false;
}
else
{
Console.WriteLine("No saltaste donde debias y caiste al abismo.");
Console.ReadLine();
}
break;
}
}
private static void OnTimedEvent2(object sender, ElapsedEventArgs e)
{
Console.WriteLine("X Y Z");
}
答案 0 :(得分:2)
Console.ReadLine()
方法中的问题是OnTimedEvent()
。这种方法
将在另一个线程中运行,并且您的主线程当前已经在监听控制台输入。
我建议阅读this question/answer,了解从不同线程读取输入/添加超时的方法。