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

时间:2013-06-17 20:10:40

标签: 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 = " ";

但这不起作用,如果有人有其他更好的逻辑,那么请回答!

1 个答案:

答案 0 :(得分:1)

上面的代码将睡眠UI线程,所以基本上发生的是:

  1. 请求将标签文本设置为"密码错误!" (直到下一个UI线程勾选才更新)
  2. 睡5秒
  3. 请求将标签文本设置为""
  4. UI线程标记,标签设置为""
  5. 要解决此问题,请执行以下操作:

    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();
    

    这将:

    1. 请求将标签文本设置为"密码错误!"
    2. 启动另一个休眠5000毫秒的线程
    3. 同时UI线程继续执行,因此Label更新为"密码错误!"
    4. 传递5000毫秒,后台请求清除标签文本
    5. UI线程勾选并更新标签