【发布时间】:2009-03-10 20:26:14
【问题描述】:
我在尝试将所有正常 WCF 调用转换为异步 WCF 调用时遇到问题。我发现我重构了很多代码,但不确定到底该怎么做。我使用了我找到的方法here,但遇到了我需要按顺序发生的问题。
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 调用转换为 async 以备不时之需。我发现它需要一种不同的思维方式。
【问题讨论】:
标签: wcf asynchronous