> 백엔드 개발 > C++ > Blazor에서 API 호출 중 UI 차단을 방지하려면 어떻게 해야 합니까?

Blazor에서 API 호출 중 UI 차단을 방지하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-30 11:32:10
원래의
708명이 탐색했습니다.

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

Blazor에서 API 호출 중 비차단 UI 업데이트

Blazor 애플리케이션에서 API를 호출할 때 작업이 다음과 같다는 것을 사용자에게 피드백을 제공하는 것이 중요합니다. 진행중. 이는 스피너 또는 대기 커서를 표시하여 수행할 수 있습니다.

옵션 1: Task.Delay(1) 사용

이 방법에는 비동기 작업을 실행하고 Wait 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용 아님)

이것은 접근 방식에는 장기 실행 작업을 작업 내에 포함시켜 기본 작업을 차단하지 않도록 하는 것이 포함됩니다. thread.

async Task AsyncLongOperation()
{
    spinning = true;
    await Task.Run(() => LongOperation()); // Enclose in a task
    currentCount++;
    spinning = false;
}
로그인 후 복사

효과 및 제한

두 방법 모두 API 호출 중에 스피너를 효과적으로 표시합니다. 그러나 Blazor Server 앱에서 서버 측 사전 렌더링이 활성화된 경우 스피너가 표시되지 않을 수 있습니다. 이 문제를 해결하려면 OnAfterRender 이벤트에서 긴 작업을 처리해야 합니다.

샘플 프로젝트

Blazor 애플리케이션에서 스피너를 구현하기 위한 더 많은 예제와 기술을 보려면 오픈 소스 프로젝트 BlazorPro.Spinkit을 살펴보세요.

위 내용은 Blazor에서 API 호출 중 UI 차단을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿