gpt4 book ai didi

async-await - Blazor 启动错误 : System. Threading.SynchronizationLockException:无法等待此运行时上的监视器

转载 作者:行者123 更新时间:2023-12-03 18:43:27 24 4
gpt4 key购买 nike

我试图在 blazor(客户端)启动期间调用 api 以将语言翻译加载到 ILocalizer 中。
在这一点上,我尝试从 get 请求中获取 .Result blazor 在标题中引发错误。
这可以通过在 program.cs 中调用此方法来复制

  private static void CalApi()
{
try
{
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(@"https://dummy.restapiexample.com/api/v1/employees");
string path = "ididcontent.json";
string response = httpClient.GetStringAsync(path)?.Result;
Console.WriteLine(response);
}
catch(Exception ex)
{
Console.WriteLine("Error getting api response: " + ex);
}

}

最佳答案

避免 .Result ,它很容易死锁。您会收到此错误,因为单线程 webassembly 不(不能)支持该机制。我会认为这是一个功能。如果它可以在监视器上等待,它就会卡住。

private static async Task CalApi()
{
...
string response = await httpClient.GetStringAsync(path);
...
}
所有事件和生命周期方法覆盖都可以是 Blazor 中的 async Task,因此您应该能够适应它。

关于async-await - Blazor 启动错误 : System. Threading.SynchronizationLockException:无法等待此运行时上的监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63211539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com