C# 如何使程序在两个定时操作之间等待
我正在尝试为WindowsPhone8开发一个简单的SimonSays应用程序 为了让序列对用户可见,我使用了一个数组(C# 如何使程序在两个定时操作之间等待,c#,windows-phone-8,C#,Windows Phone 8,我正在尝试为WindowsPhone8开发一个简单的SimonSays应用程序 为了让序列对用户可见,我使用了一个数组(tasti)填充键索引,并使用一个循环检查数组并使按钮变暗 我写了这段代码: int livello = 1; double opac = 0.3; void IniziaGioco() { DispatcherTimer timer5 = new DispatcherTimer(); timer5.Interval
tasti
)填充键索引,并使用一个循环检查数组并使按钮变暗
我写了这段代码:
int livello = 1;
double opac = 0.3;
void IniziaGioco()
{
DispatcherTimer timer5 = new DispatcherTimer();
timer5.Interval = new TimeSpan(0, 0, 0, 1);
timer5.Start();
for (int i = 0; i < livello; i++)
{
switch (tasti[i])
{
case 1:
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 0, 300);
timer.Tick += new EventHandler(DiventaOpaco1);
Button1.Opacity = opac;
SuonoBottone1.Play();
timer.Start();
timer5.Start();
break;
case 2:
DispatcherTimer timer2 = new DispatcherTimer();
timer2.Interval = new TimeSpan(0, 0, 0, 0, 300);
timer2.Tick += new EventHandler(DiventaOpaco2);
Button2.Opacity = opac;
SuonoBottone2.Play();
timer2.Start();
timer5.Start();
break;
case 3:
DispatcherTimer timer3 = new DispatcherTimer();
timer3.Interval = new TimeSpan(0, 0, 0, 0, 300);
timer3.Tick += new EventHandler(DiventaOpaco3);
Button3.Opacity = opac;
SuonoBottone3.Play();
timer3.Start();
timer5.Start();
break;
case 4:
DispatcherTimer timer4 = new DispatcherTimer();
timer4.Interval = new TimeSpan(0, 0, 0, 0, 300);
timer4.Tick += new EventHandler(DiventaOpaco4);
Button4.Opacity = opac;
SuonoBottone4.Play();
timer4.Start();
timer5.Start();
break;
}
}
int-livello=1;
双opac=0.3;
Iagioco()无效
{
Dispatchermer timer5=新Dispatchermer();
timer5.Interval=新的时间跨度(0,0,0,1);
timer5.Start();
for(int i=0;i
timer1
timer2
timer3
和timer4
工作正常,调暗按钮的方式正确
我想使用timer5
使我的代码在“下一步”按钮变暗之前“等待”1秒,但它不起作用,因为按钮同时变暗
计时器是最好的方法吗?如何使我的代码工作?您可以使用AutoResetEvent.WaitOne(int)而不是使用计时器。我指的是AutoResetEvent.WaitOne()方法的重载-。如果您从未提供Set()事件时,计时器将耗尽,并执行下一行代码。您可以使用计时器来实现这一点。但IMO的最佳解决方案是async/wait
以及Task.delay
for (int i = 0; i < livello; i++)
{
// Your switch case
await Task.Delay(1000);
}
您可以查看异步任务编程:
Qoute:Visual Basic中的Async和Await关键字以及C#中的Async和Await关键字是异步编程的核心。通过使用这两个关键字,您可以使用.NET Framework或Windows运行时中的资源创建异步方法,几乎与创建同步方法一样简单。您定义的异步方法通过使用async和await,它们被称为异步方法
似乎所有的逻辑都是相同的,但为什么要使用单独的计时器1、2、3、4?我必须如何更改Iagioco()签名?
async void IniziaGioco()
// you get somthing like this:
SuonoBottone1.Play();
await Task.Delay(1000);
SuonoBottone2.Play();
await Task.Delay(1000);
SuonoBottone3.Play();
await Task.Delay(1000);