Blazor WebAssembly Monitor Threading exception

南楼画角 提交于 2021-02-11 17:05:39

问题


I'm currently working on a .NET Standard 2.1 Blazor WebAssembly hosted application.

My application structure looks like this:

  • BlazorApp.Client (error occures here)
  • BlazorApp.Server

I use Serilog with the Elasticsearch sink in my BlazorApp.Client project. It works fine, but when I enable Selflog on Serilog and debug, I get the following error in my browser console:

SelfLog.Enable(msg => Debug.WriteLine(msg));

Elasticsearch.Net.UnexpectedElasticsearchClientException: Cannot wait on monitors on this runtime. ---> System.Threading.SynchronizationLockException: Cannot wait on monitors on this runtime.

at (wrapper managed-to-native) System.Threading.Monitor.Monitor_wait(object,int)

at System.Threading.Monitor.ObjWait (System.Boolean exitContext, System.Int32 millisecondsTimeout, System.Object obj) <0x36c60c8 + 0x00046> in :0

at System.Threading.Monitor.Wait (System.Object obj, System.Int32 millisecondsTimeout, System.Boolean exitContext) <0x36c5de8 + 0x00022> in :0

It seems to be an issue in the current Blazor WASm release: https://github.com/dotnet/aspnetcore/issues/22400

Cannot Wait on monitors Does anyone know, how to possibly get rid of this error in Blazor WebAssembly Client?


回答1:


You cannot 'get rid of' that error in Blazor WebAssembly. WebAssembly code is (for the time being) single-threaded so executing System.Threading.Monitor.Wait(something); would be a guaranteed deadlock.

The framework correctly signals to you that this code is not suitable for WebAssembly.

You will have to get rid of of any code that needs to Wait().



来源:https://stackoverflow.com/questions/63397536/blazor-webassembly-monitor-threading-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!