6 Tips of Separation: Listing 1.

Asynchronous calls to a WCF service.

public void LoadById(int id)
{
  // Create an instance of the service proxy
  var client = new PersonService.PersonServiceClient();
  // Subscribe to the "completed" event for the service method
  client.LoadByIdCompleted += 
    new EventHandler<PersonService.LoadByIdCompletedEventArgs>(
           client_LoadByIdCompleted);
  // Call the service method
  client.LoadByIdAsync(id);
}

void client_LoadByIdCompleted(object sender, 
    PersonService.LoadByIdCompletedEventArgs e)
{
  // This method is called after the call to LoadByIdAsync() is finished
  PersonService.PersonDtopersonReturnedByService = e.Result;
  // ...
}

About the Author

Benjamin Day is a consultant and trainer specializing in software best practices using Microsoft tools. Ben’s main areas of emphasis include Team Foundation Server, Scrum, software testing, and software architecture. He is a Microsoft Visual Studio ALM MVP, a certified Scrum trainer via Scrum.org, and a speaker at conferences such as TechEd and Visual Studio Live! When not developing software, Ben’s been known to go running and sea kayaking in order to balance out his love of cheese, cured meats, and champagne. He can be contacted via www.benday.com.