2019年12月24日
川俣晶の縁側ソフトウェア技術雑記total 4113 count

Blazor Serverで画面が更新されない (Web Asssemblyなら更新される)

Written By: 川俣 晶連絡先

問題 §

 Blazor Serverのアプリで画面が更新されない。

 全く同じソースをBlazor Web Asssemblyに持っていくと更新される。

原因 §

 マルチスレッドの動作が互換ではないから。

 Blazorにも別スレッドからの画面更新要求は受理できない制約があり、Blazor Serverではこの条件に当てはまる可能性がある。

 一方で、Blazor Web Asssemblyではマルチスレッドはまだ使えない。Taskは実行権が空いたときだけ実行されるチャンスがあるが常に同じスレッドで実行されるので、別スレッドからの画面更新要求は発生しない。

解決 §

 InvokeAsyncメソッドを使って、メインスレッドで画面更新要求(StateHasChanged呼び出し)を行う。

 (InvokeAsyncメソッドはBlazor Web Asssemblyでも動作するので、これを使っておけば安全である。ただし、InvokeAsyncの動作をブロックするとハングする可能性がある。awaitを使っておけばたぶん安全)

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2019年
12月
24日
BlazorでOnInitializedAsyncからJavaScriptを呼べない
3days 0 count
total 3028 count
【技術雑記】の前のコンテンツ
2019年
12月
22日
Blazorでdisabled属性を変更できない
3days 0 count
total 4245 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20191224083819
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.