Windows Phone在方法运行时操作元素

时间:2016-01-04 11:31:34

标签: c# windows-phone-8 windows-phone

在点击之前的QuestionNumber.Foreground为红色,我尝试使用此代码进行测试:

private void QuestionNumber_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        QuestionNumber.Foreground = new SolidColorBrush(Colors.Gray);
        System.Threading.Thread.Sleep(1000);
        QuestionNumber.Foreground = new SolidColorBrush(Colors.Yellow);
    }

结果:1​​秒后QuestionNumber前景为黄色,但点击

后看不到灰色

2 个答案:

答案 0 :(得分:1)

永远不要在UI线程上使用System.Threading.Thread.Sleep(...),因为它会阻止整个应用程序(应用程序不会对任何用户输入作出反应,UI也不会更新,这就是为什么你看不到颜色变化)。

出于测试目的,您可以将Thread.Sleep替换为Task.Delay

private async void QuestionNumber_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    QuestionNumber.Foreground = new SolidColorBrush(Colors.Gray);
    await System.Threading.Tasks.Task.Delay(1000);
    QuestionNumber.Foreground = new SolidColorBrush(Colors.Yellow);
}

(请注意方法签名中的关键字async,这是等待Task.Delay调用所必需的。)

答案 1 :(得分:0)

确切地说,使用任务和代码将执行行显示预期的结果。

睡眠使应用程序成为墓碑