我正在玩Azure Durable 功能。目前,我在InvalidOperationException
调用活动后进入了编排功能。它抱怨检测到多线程执行。如果协调器函数之前从不受支持的异步回调中恢复,则可能会发生这种情况。
有没有人遇到过这样的问题?我做错了什么?完整代码可以在GitHub上找到
这是编排功能中的一行:
var res = await ctx.CallActivityAsync<int>("LengthCheck", "inputData");
LengthCheck
活动函数为:
[FunctionName("LengthCheck")]
public static Task<int> Calc([ActivityTrigger] string input)
{
var task = Task.Delay(TimeSpan.FromSeconds(5));
task.Wait();
return Task.FromResult(input.Length);
}
堆栈跟踪是:
ac6fd5cdd07a4dc9b2577657d65c4f27:函数“InpaintOrchestration(Orchestrator)”,版本“”因错误而失败。原因:System.InvalidOperationException:检测到多线程执行。如果协调器函数之前从不受支持的异步回调中恢复,则可能会发生这种情况。
在 Microsoft.Azure.WebJobs.DurableOrchestrationContext.ThrowIfInvalidAccess()
在 Microsoft.Azure.WebJobs.DurableOrchestrationContext.d__47`1.MoveNext()
从先前抛出异常的位置结束堆栈跟踪
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()