当我试图将所有普通的WCF调用转换为异步WCF调用时,我遇到了一些问题。我发现我需要重构很多代码,但不确定该如何做。我使用了在这里找到的方法,但遇到了需要按顺序进行操作的问题。
private void btnSave_Click(object sender, RoutedEventArgs e)
{
List<Item> itemList = GetList();
foreach(Item i in itemList)
{
DoSomeWork(i);
if(i.SomeID == 0)
{
DoSomeMoreWork(i);
}
UpdateRecord(i) // this can't execute until the above code is complete
}
}
private void DoSomeWork(Item i)
{
// call async method
}
private void DoSomeMoreWork(i)
{
// call async method
}
private void UpdateRecord(item i)
{
// call async method
}
什么是重构代码以异步方式工作的最佳方法,或者我需要完全重新思考我的逻辑?我真的需要到处插入计数器和开关来确保在其他事情执行之前完成某些事情吗?
编辑:我这样做的原因是在接下来的几个月中,我们将把这个WPF应用程序转换为Silverlight,这需要异步调用。所以我正在尝试将我们的常规WCF调用转换为异步调用以做好准备。我发现这需要一种不同的思考方式。