我正在尝试从基于事件的异步模式转换,我使用唯一的id和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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在努力的部分是找出方法是否正在运行.我已经尝试创建一个Task并查看as和异步方法的.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();
}
}
Run Code Online (Sandbox Code Playgroud)