Verfolgen, ob eine asynchrone / wartende Aufgabe ausgeführt wird

Ich versuche, von dem ereignisbasierten asynchronen Muster überzugehen, in dem ich ausgeführte Methoden mithilfe eindeutiger IDs und des asynoperationmanagers nachverfolgte.
Da dies jetzt aus Windows 8 Apps entfernt wurde, versuche ich, einen ähnlichen Effekt mit Async / Await zu erzielen, kann aber nicht genau herausfinden, wie.
Was ich versuche zu erreichen, ist so etwas wie

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

Der Teil, mit dem ich zu kämpfen habe, ist herauszufinden, ob die Methode ausgeführt wird. Ich habe versucht, eine Aufgabe zu erstellen und sowohl den Status dieser als auch den Status der asynchronen Methode zu überprüfen, aber sie scheinen nicht der richtige Ort zu sein, um sie zu überprüfen. Vielen Dank

UPDATE: Dies ist der aktuelle Code, den ich in .net 4 verwende, um das gleiche Ergebnis zu erzielen. _updateMetaDataAsync ist eine Klasse, die auf dem ereignisbasierten asynchronen Muster basiert.

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();
        }
    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage