Is there a standard pattern to follow when waiting for N number of async methods to complete?

Viewed 380
public class FooDataRepository
{
    private MyServiceReferenceClient Client { get; set; }

    public void FooClass()
    {
        Client = new MyServiceReferenceClient();
        Client.SaveFooCompleted += Client_SaveFooCompleted;
        Client.SaveBarCompleted += Client_SaveBarCompleted;
    }

    private void Client_SaveFooCompleted(Object sender, EventArgs e) { ... }

    private void Client_SaveBarCompleted(Object sender, EventArgs e) { ... }

    public void SaveFoo(Foo foo)
    {
        Client.SaveFooAsync(foo);

        foreach (var bar in foo.Bars)
            Client.SaveBarAsync(bar);
    }

}

I want to do something within the FooDataRepository class once the SaveFooAsync and the all the SaveBarAsync methods have completed. Is there a standard pattern for trying to do a single thing based upon N number of Async calls completing?

3 Answers
Related