Como controlar se uma tarefa assíncrona / aguardável está sendo executada

Estou tentando fazer a transição do padrão assíncrono baseado em evento, onde rastreei os métodos de execução usando identificadores exclusivos e o gerenciador de assinaturas.
Como isso foi descartado do Windows 8, estou tentando obter um efeito semelhante com o Async / Await, mas não consigo descobrir como.
O que eu estou tentando alcançar é algo como

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

A parte que estou lutando é descobrir se o método está sendo executado. Eu tentei criar uma tarefa e observar o status de ambos e do .status do método assíncrono, mas eles não parecem ser o lugar correto para procurar. obrigado

ATUALIZAÇÃO: Este é o código atual que uso no .net 4 para obter o mesmo resultado. _updateMetaDataAsync é uma classe baseada no padrão assíncrono baseado em evento.

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