ホームページ > バックエンド開発 > C++ > Blazor での API 呼び出し中の UI ブロックを防ぐにはどうすればよいですか?

Blazor での API 呼び出し中の UI ブロックを防ぐにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-30 11:32:10
オリジナル
705 人が閲覧しました

How Can I Prevent UI Blocking During API Calls in Blazor?

Blazor での API 呼び出し中のノンブロッキング UI 更新

Blazor アプリケーションで API 呼び出しを行うときは、アクションが適切であることを示すフィードバックをユーザーに提供することが重要です。進行中。これは、スピナーまたは待機カーソルを表示することで実現できます。

オプション 1: Task.Delay(1) を使用する

この方法には、非同期タスクの実行と await Task.Delay(1) の組み込みが含まれます。その中で。これにより、長時間実行操作が開始される前に、変更をフラッシュして UI を更新できます。

private async Task AsyncLongFunc()
{
    spinning = true;
    await Task.Delay(1); // Flushing changes
    LongFunc(); // Non-async code
    currentCount++;
    spinning = false;
    await Task.Delay(1); // Flushing changes again
}
ログイン後にコピー

オプション 2: Task.Run() を使用する (WebAssembly には非対応)

これこのアプローチには、長時間実行される操作をタスク内に囲み、メインスレッドをブロックしないようにすることが含まれます。

async Task AsyncLongOperation()
{
    spinning = true;
    await Task.Run(() => LongOperation()); // Enclose in a task
    currentCount++;
    spinning = false;
}
ログイン後にコピー

効果と制限事項

どちらのメソッドも API 呼び出し中にスピナーを効果的に表示します。ただし、Blazor サーバー アプリでサーバー側の事前レンダリングが有効になっている場合、スピナーは表示されない場合があります。これを解決するには、長時間の操作を OnAfterRender イベントで処理する必要があります。

サンプル プロジェクト

Blazor アプリケーションにスピナーを実装するためのその他の例とテクニックについては、オープン ソース プロジェクト BlazorPro.Spinkit を参照してください。

以上がBlazor での API 呼び出し中の UI ブロックを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート