如何解决Blazor:在不锁定组件ctor或InvokeAsync内部的情况下,增加静态字段是否安全?
假设以下代码,ID是否保证在每个用户会话中都是唯一的?
@code {
static int counter;
private int id = ++counter;
}
此外,是否遵循threadasafe?
protected override async Task InitializeAsync()
{
await base.InitializedAsync(); // might return continue in non-ui thread
await InvokeAsync(() => {
counter++;
})
}
我认为问题归结为是否
-
两个或多个组件的构造函数可以在同一用户会话中的两个并发线程中同时运行
-
InvokeAsync()中的两个或更多代码块可以在同一用户会话中的两个并发线程中同时运行
解决方法
是的,对于目前为止的客户端火焰(wasm)这是安全的。但是由于您提到的原因,对于服务器端的火焰来说并不安全。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。