現状の選択肢はおそらく3つ。
- .NET 6を待つ (.NET 5を待っても実現されなかった実績があるので、不確定。そもそもWebAssemblyの仕様に含まれないらしい。個別ブラウザのスレッドの実装はある)
- async/awaitを利用した擬似マルチタスクでお茶を濁す (機能的な制約は大きい)
- Tewr/BlazorWorkerで対処する (しかし、メモリはスレッド間で共有されないので、Workerの制約をまるまるかぶる)
決定版の解決策はない。いかに制約と機能の妥協を探るかだろう。
とりあえず、Web関係者の危機感の無さと無能っぷりは本当に酷い。
あの使いにくいJavaScriptを何年も放置して知らん顔をしていたのに、まだ同じことが繰り返されている。
オマケ §
.NET 5のBlazor WAでWaitメソッドはPlatformNotSupportedExceptionになって動作しないようだ。awaitは動作する。実行がブロックされることを理解した上でWaitメソッドで待たせるコードは記述することができない模様。