我的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);
}
答案 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加快操作速度。
对于异步编程,您可以在MSDN和Stephen Cleary's blog找到许多有用的信息。