这样在Azure持久功能活动中使用Task.Delay可以吗?
我正在轮询存储区,以获取应该在20-30秒左右的时间内到达的数据。
while (requestAccepted && retryCount < 8)
{
object savedData = await DataManagementService.GetSessionData(processSessionId);
if (savedData != null && savedData.GetType().GetProperties().Any())
{
return true;
}
await Task.Delay(TimeSpan.FromSeconds(10));
retryCount++;
}
使用context.CreateTimer
的功能计时器功能(已解释here)仅适用于Azure 编排功能,而不适用于活动功能。
答案 0 :(得分:1)
使用Task.Delay()
是完全可以的,只要您愿意在函数等待时为死区时间付费,并且您知道它会在超时之前完成。
但是,更好的选择是将GetSessionData()
调用移至活动函数,将此轮询函数转换为协调器,以便您可以将Task.Delay()
替换为context.CreateTimer()
并从通过context.CallSubOrchestratorAsync()
的主要协调器。