Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight Mobile中DispatchTimer的实现_C#_Silverlight_Windows Phone 7 - Fatal编程技术网

C# Silverlight Mobile中DispatchTimer的实现

C# Silverlight Mobile中DispatchTimer的实现,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我正在为WP7做一个骰子游戏,每回合有多个骰子。在CPU轮到的时候,我需要减慢进程,这样用户就可以看到发生了什么。经过仔细研究,我发现DispatchTimer可以这样使用 问题是,我不知道这是怎么回事。查看MSDN文档只会让我摸不着头脑,大多数在线示例都将其链接到按键或鼠标单击 所以我有一个do-while循环,它调用我的骰子滚动函数五次,然后改变骰子图像以显示结果 现在计时器的代码是: DispatcherTimer dispatcherTimer = new DispatcherTimer

我正在为WP7做一个骰子游戏,每回合有多个骰子。在CPU轮到的时候,我需要减慢进程,这样用户就可以看到发生了什么。经过仔细研究,我发现DispatchTimer可以这样使用

问题是,我不知道这是怎么回事。查看MSDN文档只会让我摸不着头脑,大多数在线示例都将其链接到按键或鼠标单击

所以我有一个do-while循环,它调用我的骰子滚动函数五次,然后改变骰子图像以显示结果

现在计时器的代码是:

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
然后:

  private void dispatcherTimer_Tick(object sender, EventArgs e)
{
   int i = 0; 
   do
   {
      cpuTurn();
      i++;
   }
   while(i < 6);
}
private void dispatchermer_Tick(对象发送方,事件参数e)
{
int i=0;
做
{
cpuTurn();
i++;
}
而(i<6);
}

但这不起作用。那么我做错了什么?我是否以错误的方式使用计时器?

是的,在事件处理程序完成之前,显示不会更新。只调用cpuTurn()一次。将循环计数器移到方法外部,使其成为类成员。当dispatchermer.Stop()计数到6时调用它。再次轮到CPU时,重置计数器并调用Start()


谷歌“事件驱动编程”,了解更多关于编写GUI代码时所需编程类型的信息。

是的,在事件处理程序完成之前,显示不会更新。只调用cpuTurn()一次。将循环计数器移到方法外部,使其成为类成员。当dispatchermer.Stop()计数到6时调用它。再次轮到CPU时,重置计数器并调用Start()


谷歌“事件驱动编程”,了解更多关于编写GUI代码时所需编程类型的信息。

非常好。非常感谢,太好了。非常感谢你。