我是否应该盲目地使用异步 api 并希望获得最好的结果?
在 Windows Phone 平台上,您确实必须使用async
API,但我建议您不要“盲目地”使用它们。首先了解它们;我的博客上有一个async
介绍,可能会有所帮助。
假设用户点击 Save 按钮来保存数据模型。所有的保存都是异步完成的。这意味着用户可以在保存数据模型时继续更改数据模型。如果在中途修改,这不会弄乱数据并损坏他的文件吗?
是的。一种常见的做法是在请求未完成时复制数据和/或禁用控件,例如,此代码将在第一次请求保存时复制数据并禁用保存按钮,直到保存完成:
public async Task SaveAsync(MyData data) { ... }
// Logically, this is an asynchronous ICommand.Execute implementation.
public async void SaveCommand()
{
saveInProgress = true;
dirty = false;
MyData data = CopyData();
await SaveAsync(data);
saveInProgress = false;
}
// Logically, this is an ICommand.CanExecute implementation.
public bool CanSave { get { return !saveInProgress && dirty; } }
private bool saveInProgress, dirty;
使用线程保存时,您面临完全相同的问题。
这如何使开发人员更容易?
async
代码比使用线程的代码更易于维护。