我正在尝试从基于事件的异步模式转换,在该模式中我使用唯一 ID 和异步操作管理器跟踪运行方法。
由于这已从 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
}
}
}
我正在努力的部分是找出该方法是否正在运行。我尝试创建一个 Task 并查看它的状态和 async 方法的 .status ,但它们似乎不是正确的查看位置。谢谢
更新:这是我在 .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();
}
}