Windows phone 7 用于有限时间的消息,thread.sleep(x)不工作-Windows Phone

Windows phone 7 用于有限时间的消息,thread.sleep(x)不工作-Windows Phone,windows-phone-7,windows-phone-8,windows-phone,windows-phone-7.1,windows-phone-7.1.1,Windows Phone 7,Windows Phone 8,Windows Phone,Windows Phone 7.1,Windows Phone 7.1.1,我只想在TextBlock中显示短时间的消息。 我正在使用这个代码 Label1.Text = "Wrong Password!"; System.Threading.Thread.Sleep(5000); Label1.Text = " "; 但这是行不通的,如果有人有其他更好的逻辑,那么请回答 上面的代码将使UI线程休眠,因此本质上发生的是: 请求将标签文本设置为“错误密码!”(在下一个UI线程勾选之前不会更新) 睡5秒钟 请求将标签文本设置为“” UI线程标记,标签设置为“” 要解决此问

我只想在TextBlock中显示短时间的消息。 我正在使用这个代码

Label1.Text = "Wrong Password!";
System.Threading.Thread.Sleep(5000);
Label1.Text = " ";

但这是行不通的,如果有人有其他更好的逻辑,那么请回答

上面的代码将使UI线程休眠,因此本质上发生的是:

  • 请求将标签文本设置为“错误密码!”(在下一个UI线程勾选之前不会更新)
  • 睡5秒钟
  • 请求将标签文本设置为“”
  • UI线程标记,标签设置为“”
  • 要解决此问题,请执行以下操作:

    Label1.Text = "Wrong Password!";
    
    // start a new background thread
    new Thread(new ThreadStart(() =>
    {
        Thread.Sleep(5000);
    
        // interacting with Control properties must be done on the UI thread
        // use the Dispatcher to queue some code up to be run on the UI thread
        Dispatcher.BeginInvoke(() =>
        {
            Label1.Text = " ";
        });
    })).Start();
    
    这将:

  • 请求将标签文本设置为“错误密码!”
  • 启动另一个休眠5000ms的线程
  • 与此同时,UI线程继续执行,因此标签会更新为“错误密码!”
  • 5000ms通过,背景要求清除标签文本
  • UI线程勾选并更新标签

  • 或者,
    Label1.Text=“错误的密码!”;等待任务。延迟(5000);标签1.Text=“”是的,这是WP8的一个更干净的解决方案,但是如果没有安装异步框架,那么对于以前的版本来说是一件痛苦的事情……Label1.Text=“错误的密码!”;等待任务。延迟(5000);标签1.Text=“”;这不起作用:/