1

我希望我的应用程序在代码执行时更新屏幕信息。我试过了,this.LayoutRoot.UpdateLayout();但没有用,我不明白为什么。谁能帮我?应用程序从单击的按钮接收按钮属性,然后将其用于 Model 类中的几件事,然后我希望它向用户显示一条消息。之后我希望它继续执行更多的事情(AI)......:S

public void showMsgFromModel(string player, string msg)
    {
        if(player!="")
            txNomeMsg.Text = player + ":";
        else
            txNomeMsg.Text = player;

        txMsg.Text = msg;
        this.LayoutRoot.UpdateLayout();
        System.Threading.Thread.Sleep(1500);
    }
4

1 回答 1

0

您正在尝试从 UI 线程进行一些处理,因此无法更新界面。

使用后台工作人员执行长时间运行的任务,并在需要更新 UI 时使用调度程序:

var worker = new BackgroundWorker();

worker.DoWork += (s, e) =>
{
    Thread.Sleep(1500); // Some processing

    Dispatcher.BeginInvoke(() => txMsg.Text = "Hello"); // Update the UI

    Thread.Sleep(1500); // More processing
};

worker.RunWorkerAsync();
于 2012-12-01T15:19:54.840 回答