Как отследить, выполняется ли асинхронная / ожидаемая задача
Я пытаюсь перейти от асинхронного шаблона, основанного на событиях, где я отслеживал запущенные методы, используя уникальные идентификаторы и asynoperationmanager.
Поскольку это было удалено из приложений для Windows 8, я пытаюсь получить аналогичный эффект с Async / Await, но не могу понять, как.
То, чего я пытаюсь достичь, это что-то вроде
private async Task updateSomething()
{
if(***the method is already running***)
{
runagain = true;
}
else
{
await someMethod();
if (runagain)
{
run the method again
}
}
}
Часть, с которой я борюсь, это выяснение, работает ли метод. Я пытался создать задачу и посмотреть на состояние как этого, так и состояния асинхронного метода, но они не являются подходящим местом для поиска. Спасибо
ОБНОВЛЕНИЕ: это текущий код, который я использую в .net 4 для достижения того же результата. _updateMetaDataAsync - это класс, основанный на асинхронном шаблоне на основе событий.
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();
}
}