我有一个获取的记录行显示在Windows Phone UI ..这取数据做了很多这任务视图模型方法在视图模型中,所有标有等待操作方法。
看起来象下面这样:
async Task GetData()
{
var dataCollection = await GetSomeData();
await DoThis();
await DoThat();
}
在“DoThis”呼叫调用之后的UI刷新。 现在,我只是认为,如果我在代码中引入Task.Delay完成其他任务之前,用户界面是立即刷新..这是我原来的目标,之后“GetSomeData”返回立即刷新UI再火的其他任务。
看起来象下面这样:
async Task GetData()
{
var dataCollection = await GetSomeData();
await Task.Delay(100);
await DoThis();
await DoThat();
}
所以我从这个理解,就是UI线程得到机会Task.Delay呼叫作出后刷新。 但是没有Task.Delay,如果DoThis被调用,一些时间,找到的第一个awaitable方法之前在“DoThis”,以便它可以返回,并继续与UI刷新丢失。
我的问题是:
- 有我的理解是正确的吗?
- 它是安全的把这个产品代码?
在此先感谢,并希望我已经解释清楚..
镨
下面是这些方法的细节没有那些目前尚不清楚什么是在程序去.. :(
async Task<ObservableCollection<MyModel>> GetSomeData()
{
return await Task.Run(() =>
{
using (var db = new MainModelDataContext())
{
List<MyModel> temp =
db.Models.Where(Some condition)
.Take(30)
.ToList();
var returnCollection = new ObservableCollection<MyModel>(temp);
return returnCollection;
}
}
该的ObservableCollection势必在UI页面列表控件。 这种方法是由页面视图模型调用。
async Task DoThis()
{
// do some data processing and then post that to the Server
// this is the first awaitable method after the data processing
await (an HttpClientHandler).PostAsync();
}
任务找时间做()也遵循相同的流程DoThis ..的数据处理也被包裹在异步-等待任务,并且它们只是工作的一些类的属性。
希望我清楚..再次感谢所有