Blazor Server中HandleValidSubmitAsync抛异常时需等待未完成任务吗?
针对Blazor Server的BLOB上传任务处理建议
首先明确两个核心选择,取决于你对上传任务的业务要求:
情况1:必须确保所有上传任务执行完毕
如果这些BLOB上传是业务上必须完成的操作(比如用户提交表单后,不管表单处理是否异常,文件都得传上去),那应该把await Task.WhenAll(listTasks);放到finally块里。
注意事项:
- 要保证
listTasks变量在finally块中可访问(比如声明在try块外部) - 既然你不需要处理任务抛出的异常,无需额外加
try-catch,但要清楚:如果任务执行失败,未捕获的异常在.NET Core及以后版本中会被框架处理,不会直接导致进程崩溃,但调试时可能需要查看日志排查问题
情况2:上传任务非必须完成
如果表单处理异常时,放弃这些上传任务也不影响业务,那完全不需要放到finally块里,直接在正常流程中await Task.WhenAll(listTasks);即可。
额外提醒:
- 如果你完全不关心上传结果,甚至可以不
await任务直接让它后台运行,但这种做法不推荐——未被观察的异常在调试时很难追踪,而且如果上传任务依赖Blazor组件的上下文,方法退出后可能会出现上下文已释放的问题。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

