在Windows-8.1上更新Universal Application中的UI元素

时间:2014-11-20 11:05:03

标签: xaml windows-phone-8.1 windows-8.1

我的Windows 8.1应用程序上有一个TextBlock:

<TextBlock x:Name="some" Text="" TextWrapping="Wrap" />

我有一个代码:

some.Text = "example 1";
// working with web service
some.Text = "example 2";
// working with database

当我启动我的代码时,我只看到&#34;示例1&#34;信息。消息&#34;示例2&#34;我只能在数据库操作完成后才能看到。

在Windows 8.1上有没有办法重绘/刷新/更新UI元素?

更新

这是数据库操作:

foreach(var record in records)
{
   SqliteController.InsertRecord(record);
}

....

public void async InsertRecord(Inspection record)
{
    connection.InsertAsync(inspection);
}

1 个答案:

答案 0 :(得分:1)

您的UI线程似乎被阻止,因此它不会立即升级。我没有看到所有的代码,但是从中你所看到的似乎connection.InsertAsync(inspection);是一个异步操作。可能在这种情况下,等待你的程序就足够了:

foreach (var record in records)
{
    await SqliteController.InsertRecord(record);
}

您还可以考虑将繁重的作业重定向到其他线程,例如:

Task.Run(() =>
{
    foreach (var record in records)
         SqliteController.InsertRecord(record);
});

您也可以考虑使用Paraller.ForEach加快操作速度。

对于异步编程,您可以在MSDNStephen Cleary's blog找到许多有用的信息。