Jak śledzić, czy uruchomione jest zadanie asynchroniczne / oczekiwane

Próbuję przejść od wzorca asynchronicznego opartego na zdarzeniu, w którym śledziłem działające metody przy użyciu unikalnych identyfikatorów i menedżera asynoperation.
Ponieważ został on usunięty z aplikacji Windows 8, staram się uzyskać podobny efekt z Async / Await, ale nie wiem, jak to zrobić.
To, co próbuję osiągnąć, to coś takiego

private async Task updateSomething()
{
    if(***the method is already running***)
    {
        runagain = true;
    }
    else
    {
        await someMethod();
        if (runagain)
        {
            run the method again
        }            
    }
}

Część, z którą się zmagam, to ustalenie, czy metoda działa. Próbowałem utworzyć Zadanie i sprawdzić status zarówno tego, jak i stanu metody asynchronicznej, ale nie wydają się one właściwym miejscem do patrzenia. Dzięki

UPDATE: To jest obecny kod, którego używam w .net 4, aby osiągnąć ten sam rezultat. _updateMetaDataAsync jest klasą opartą na wzorcu asynchronicznym opartym na zdarzeniach.

private void updateMetaData()
    {
        if (_updateMetaDataAsync.IsTaskRunning(_updateMetaDataGuid_CheckAllFiles))
        {
            _updateMetaDataGuid_CheckAllFiles_Again = true;
        }
        else
        {
            _updateMetaDataGuid_CheckAllFiles_Again = false;
            _updateMetaDataAsync.UpdateMetaDataAsync(_updateMetaDataGuid_CheckAllFiles);
        }
    }

private void updateMetaDataCompleted(object sender, UpdateMetaDataCompletedEventArgs e)
    {
        if (_updateMetaDataGuid_CheckAllFiles_Again)
        {
            updateMetaData();
        }
    }

questionAnswers(3)

yourAnswerToTheQuestion