У меня возникают проблемы при попытке преобразовать все мои обычные вызовы 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 в асинхронные в процессе подготовки. Я считаю, что это требует другого образа мышления.