Implementar padrão assíncrono clássico usando TPL

Estou tentando implementar um TrackingParticipant personalizado para WF 4. Posso escrever o método Track, mas minha implementação será lenta.

Como implementar as substituições Begin / EndTrack usando a Task Parallel Library (TPL) do .NET 4.0? Eu olheiTPL e programação assíncrona .NET tradicional mas não sei como aplicá-lo aqui.

Observe que TrackingParticipant faz parte do .NET e tem o Classic Async Pattern predefinido usando métodos virtuais.

public class MyTrackingParticipant : TrackingParticipant
{
    protected override IAsyncResult BeginTrack(
        TrackingRecord record, TimeSpan timeout,
        AsyncCallback callback, object state)
    {
        // ?
    }

    protected override void EndTrack(IAsyncResult result)
    {
        // ?
    }

    protected override void Track(TrackingRecord record, TimeSpan timeout)
    {
        // synchronous code to be called
    }
}

questionAnswers(1)

yourAnswerToTheQuestion