我正在尝试搜索一些文章,其中包含有关在 Windows Phone 8 上将 async、await 和 Tasks 与本地数据库一起使用的最佳实践,但我只能找到使用 WebClient 或 HttpClient 的示例。
我想知道我正在尝试做的是最好的方法还是有更好的方法来做到这一点。我的 viewmodelbase 中有一个方法,如下所示:
protected virtual Task<T> ExecuteDataAsync<T>(ExecuteDataAsyncAction<T> action)
{
var task = new Task<T>(() => { return action(); });
task.Start();
return task;
}
然后,在我的保存数据中,由 ICommand 调用,我有这样的东西:
private async void SaveData()
{
if (!ValidateBeforeSave() || IsBusy)
return;
IsBusy = true;
using (var db = new AppDataContext())
{
if (db.Sources.Any(o => o.Name == SourceTitle))
{
messageBoxService.Show(AppResources.MSG_ThereIsSourceSameTitle);
return;
}
//the method in the viewModelBase with some operation
var source = await ExecuteDataAsync<Source>(() =>
{
var source = db.Source.FirstOrDefault();
return GetSource(source, false);
});
db.Sources.InsertOnSubmit(source);
//the method in the viewModelBase with some operation
var source = await ExecuteDataAsync<Source>(() =>
{
db.SubmitChanges();
});
}
IsBusy = false;
}
我不确定这是否是不涉及 WebClient 的操作的最佳方法。另外,我可以在我的 AppDataContext 或类似的东西中编写异步方法,但我不知道它是否会工作......
您如何建议我使用不依赖网络的数据库操作和其他处理器密集型操作?