一个 SynchronizationContext 是否在多个线程/任务上使用?

问题描述 投票:0回答:1

Blazor 中是否存在在多个线程/任务上使用 SynchronizationContext 的情况?

我想确定一个方法的调用堆栈中是否有组件BuildRenderTree。为此,我创建了一个自定义 ComponentBase,其中使用自定义代码包装 BuildRenderTree。我的方法是检查 SynchronizationContext。据我了解,它对于一个组件来说是唯一的,因此 BuildRenderTree 的执行不会被具有相同 SynchronizationContext 集的其他线程/任务“中断”。我做对了吗?在这种情况下使用 SynchronizationContext 是否有任何陷阱? (我不确定 razor 文件中使用的组件是否在 BuildRenderTree 中渲染,但我已经可以正确处理这种情况)

c# asp.net blazor synchronization
1个回答
0
投票

据我了解,它对于一个组件来说是唯一的,

其实不然。它附加到 SignalR 电路并由整个 UI 共享。在 WebAssembly 上运行时为 null。

因此,BuildRenderTree 的执行不会被具有相同 SynchronizationContext 集的其他线程/任务“中断”。

BuildRenderTree() 不是异步的,它不会被其他任务中断。它可能会被其他线程抢占,但这不应该影响调用堆栈上的内容。

© www.soinside.com 2019 - 2024. All rights reserved.