You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WhenAll()异步运行多个Task时方法调用无返回问题

异步Task.WhenAll()无法返回的问题

我尝试通过异步方式并行执行多个Task,但程序执行到Task.WhenAll()时,这个调用始终无法返回。

相关代码如下:

List<Task> tasks = new();

tasks.Add(Task.Run( async () => viewModel.Customers = await CustomerService.GetAllAsync()));
tasks.Add(Task.Run( async () => viewModel.Orders = await OrderService.GetAllAsync()));

await Task.WhenAll(tasks.ToArray());

补充说明:
调试时发现程序卡在了CircuitHost.cs的第125行,对应截图如下:
CircuitHost.cs第125行停滞截图

以下是第125行的堆栈跟踪:

async CircuitHost.<>c__DisplayClass36_0.<InitializeAsync>b__0()at C:\Users\David\AppData\Roaming\JetBrains\Rider2022.1\resharper-host\SourcesCache\d848ab5bf79df2599514458b1cacef69f49ae55787993acba112f74d5315a7\CircuitHost.cs:line 125
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.<>c__DisplayClass36_0.<<InitializeAsync>b__0>d>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost.<>c__DisplayClass36_0.<<InitializeAsync>b__0>d>()
CircuitHost.<>c__DisplayClass36_0.<InitializeAsync>b__0()
RendererSynchronizationContext.<>c.<<InvokeAsync>b__9_0>d.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<<InvokeAsync>b__9_0>d>()
AsyncVoidMethodBuilder.Start<Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c.<<InvokeAsync>b__9_0>d>()
RendererSynchronizationContext.<>c.<InvokeAsync>b__9_0()
RendererSynchronizationContext.ExecuteSynchronously()
RendererSynchronizationContext.ExecuteSynchronouslyIfPossible()
RendererSynchronizationContext.InvokeAsync()
RendererSynchronizationContextDispatcher.InvokeAsync()
CircuitHost.InitializeAsync()at C:\Users\David\AppData\Roaming\JetBrains\Rider2022.1\resharper-host\SourcesCache\d848ab5bf79df2599514458b1cacef69f49ae55787993acba112f74d5315a7\CircuitHost.cs:line 100
ComponentHub.<StartCircuit>d__13.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Components.Server.ComponentHub.<StartCircuit>d__13>()
AsyncValueTaskMethodBuilder<string>.Start<Microsoft.AspNetCore.Components.Server.ComponentHub.<StartCircuit>d__13>()
ComponentHub.StartCircuit()
[Lightweight Method Call]
DefaultHubDispatcher<ComponentHub>.<ExecuteMethod>d__23.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<ExecuteMethod>d__23>()
AsyncValueTaskMethodBuilder<object>.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<ExecuteMethod>d__23>()
DefaultHubDispatcher<ComponentHub>.ExecuteMethod()
DefaultHubDispatcher<ComponentHub>.ExecuteHubMethod()
DefaultHubDispatcher<ComponentHub>.<<Invoke>g__ExecuteInvocation|18_0>d.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<<Invoke>g__ExecuteInvocation|18_0>d>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<<Invoke>g__ExecuteInvocation|18_0>d>()
DefaultHubDispatcher<ComponentHub>.<Invoke>g__ExecuteInvocation|18_0()
DefaultHubDispatcher<ComponentHub>.<Invoke>d__18.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<Invoke>d__18>()
AsyncTaskMethodBuilder<bool>.Start<Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>.<Invoke>d__18>()
DefaultHubDispatcher<ComponentHub>.Invoke()
DefaultHubDispatcher<__Canon>.<>c.<ProcessInvocation>b__17_0()
ChannelBasedSemaphore.<RunTask>d__7<(DefaultHubDispatcher<ComponentHub>, HubMethodDescriptor, HubConnectionContext, HubMethodInvocationMessage)>.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.SignalR.Internal.ChannelBasedSemaphore.<RunTask>d__7<(Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>, Microsoft.AspNetCore.SignalR.Internal.HubMethodDescriptor, Microsoft.AspNetCore.SignalR.HubConnectionContext, Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage)>>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.SignalR.Internal.ChannelBasedSemaphore.<RunTask>d__7<(Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>, Microsoft.AspNetCore.SignalR.Internal.HubMethodDescriptor, Microsoft.AspNetCore.SignalR.HubConnectionContext, Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage)>>()
ChannelBasedSemaphore.RunTask<(Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>, Microsoft.AspNetCore.SignalR.Internal.HubMethodDescriptor, Microsoft.AspNetCore.SignalR.HubConnectionContext, Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage)>()
ChannelBasedSemaphore.RunAsync<(Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher<Microsoft.AspNetCore.Components.Server.ComponentHub>, Microsoft.AspNetCore.SignalR.Internal.HubMethodDescriptor, Microsoft.AspNetCore.SignalR.HubConnectionContext, Microsoft.AspNetCore.SignalR.Protocol.HubMethodInvocationMessage)>()
DefaultHubDispatcher<ComponentHub>.ProcessInvocation()
DefaultHubDispatcher<__Canon>.DispatchMessageAsync()
HubConnectionHandler<ComponentHub>.<DispatchMessagesAsync>d__20.MoveNext()
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HubConnectionHandler<ComponentHub>.<DispatchMessagesAsync>d__20>.ExecutionContextCallback()
ExecutionContext.RunFromThreadPoolDispatchLoop()
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HubConnectionHandler<ComponentHub>.<DispatchMessagesAsync>d__20>.MoveNext()
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HubConnectionHandler<ComponentHub>.<DispatchMessagesAsync>d__20>.ExecuteFromThreadPool()
ThreadPoolWorkQueue.Dispatch()
PortableThreadPool.WorkerThread.WorkerThreadStart()
Thread.StartCallback()
[Native to Managed Transition]

内容的提问来源于stack exchange,提问作者AtomicallyBeyond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:35:34