C# 计时器没有运行
这是我代码的一部分:C# 计时器没有运行,c#,timer,C#,Timer,这是我代码的一部分: if (direccion.Equals("este")) { System.Timers.Timer trampa = new System.Timers.Timer(); trampa.Elapsed += new ElapsedEventHandler(OnTimedEvent); trampa.Interval = 2000; trampa.Enabled = true;
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");
}
问题在于
OnTimedEvent()
方法中的Console.ReadLine()
。这种方法
将在不同的线程中运行,并且您的主线程当前已在侦听控制台输入
我建议阅读,以了解从不同线程读取输入的方法/添加超时。是
控制台。WriteLine(“Te encumentras con una granja auddeada,al entra a la mism,Te das cuenta que hay un cofre al final del pasillo principal”)代码>正在写入控制台?我的猜测是如果(direccion.Equals(“este”)
为false。也许您需要使用不区分大小写的比较<代码>如果(direccion.Equals(“este”,StringComparison.OrdinalIgnoreCase))
。如果我设置var direccion=“este”,您的代码对我有效代码>首先。在时间上有什么?你如何确定“OnTimedEvent永远不会被执行”@FrankerZ它正在被编写,是的@鲁弗斯不是为我工作的。