ASP.NET Core Blazor에 대한 스레드

11005 단어 C#tech
이 글에서 나는'Blazor의 라인'에 대해 해설을 하고 싶다.

Blazor에 대한 스레드


Blazor에 다음과 같은 단서가 있습니다.
・ 주 스레드: 화면을 그리는 UI 스레드입니다.
・배경 스레드: WebAPI 또는 처리 시간이 긴 스레드를 호출합니다.
이 글은 배경 처리를 소개할 것이다.

Blazor 배경(비동기식) 처리 방법


Blazor로 배경을 처리하는 데는 대략 두 가지 방법이 있다.
  • InvokeAsync 처리
  • Task로 처리
  • InvokeAsync는 Blazor 표준의 기능으로 쉽게 실행할 수 있습니다.
    Task 를 발행하는 방법은 처리를 취소할 때 유효한 방법입니다.
    따로따로 해설하다.

    InvokeAsync(비동기 처리를 쉽게 수행할 수 있음)


    .NET5는 라인 보안 메커니즘의 비동기 처리로서 Blazor 구성 요소도 이 방법을 사용할 수 있도록 InvokeAsync 방법을 제공했다.
    다음과 같은 InvokeAsync 방법을 사용하여 비동기식 처리를 쉽게 수행할 수 있습니다.
    InvokeAsync(() =>
    {
        // 非同期処理、WebAPIの呼び出し等を記載
    });
    
    화면을 업데이트해야 할 때 StateHasChanged 방법을 사용하여 Blazer에 상태 변화를 알립니다.
    InvokeAsync(() =>
    {
        // 1秒ごとにカウントアップ
        currentCount++;
        // 状態変更を Blazor に通知
        StateHasChanged();
    });
    
    invoke.gif

    Task 릴리즈(취소 가능한 비동기식 처리)


    위의 InvokeAsync 메서드는 비동기 처리를 간단하게 수행할 수 있지만 비동기 처리에서는 취소할 수 없습니다.
    장시간 처리했다면 상황에 따라 취소해야 할 메커니즘도 있었다.
    이 경우 Task 실행 시 CancellelationToken 설정을 통해 실행 중 취소 통지를 할 수 있다.
    우선, 동작 인상부터 시작한다.
    canceltoken.gif
    Task 릴리즈 시 CancellationTokenSource를 설정하여 임무 수행에 대한 취소 통지를 진행할 수 있습니다.
    "Run"버튼을 클릭한 후 백그라운드에서 처리를 시작합니다.
    Cancel 버튼을 클릭하면 백그라운드 처리가 중단됩니다.
    
    @page "/canceltest"
    @implements IDisposable
    @using System.Threading
    @using System.Timers
    
    <button @onclick="RunTask">Run</button>
    <button @onclick="Cancel">Cancel</button>
    
    <p>Current count: @currentCount</p>
    
    <p>
        @message
    </p>
    
    @code {
        private int currentCount = 0;
        private string message = null;
        private CancellationTokenSource cts = new CancellationTokenSource();
    
        public async Task RunTask()
        {
    
            await Task.Run(async () =>
            {
                for (int i = 0; i < 10; i++)
                {
                //  キャンセルリクエストがある場合は処理を終了する
                if (cts.Token.IsCancellationRequested)
                    {
                        message = "タスクがキャンセルされました。";
                        break;
                    }
                    // コストが重たい処理と仮定
                    await Task.Delay(1000);
                    currentCount++;
                    // 状態変更の通知
                    StateHasChanged;
                }
            },
            // キャンセルトークン
            cts.Token);
        }
    
        public void Cancel()
        {
            // バックグラウンドスレッドをキャンセルする
            cts.Cancel();
        }
    
    }
    
    
    이상은 마이크로소프트 공식 문서에서 소개한 설치 방법을 참고한 것이다.
    https://docs.microsoft.com/ja-jp/aspnet/core/blazor/components/lifecycle?view=aspnetcore-5.0#cancelable-background-work

    Blazor 보도의 배경 번호


    https://blogs.jp.infragistics.com/archive/category/Blazor

    Ignite UI for Blazo 평가판 사용


    인프라 설계에는 충실한 UI 구성 요소 브래킷이 수록되어 있으며, 데이터가 풍부한 스펀지 기능을 갖춘 웹 애플리케이션Ignite UI을 더욱 빠르게 구축할 수 있도록 개발했으며, Blazor 지원Ignite UI for Blazor도 발표됐다.
    Ignite UI for Blazer는 평가판을 사용할 수 있습니다.
    평가판을 사용하기 위해서는 이 페이지부터 계정을 만드십시오.등록 후 30일 이내에 본사의 기술 지원을 사용할 수 있으니 마음대로 문의하십시오.
    또한 제품 구매를 고려하는 고객이 페이지은 마음대로 문의하십시오.

    개발에 대한 모든 문의는 저에게 맡기세요!


    일본 내에서는 플랫폼별 특별기술 훈련과 개발을 전반적으로 지원한다.
    https://jp.infragistics.com/service-and-support/professional-service
    이어 "구기술과 지원이 끝나는 플랫폼에서 벗어날 필요가 있지만, 목적지를 옮기는 플랫폼과 틀에 대한 검토는 진전이 없고 견해도 없다"고 덧붙였다.
    이어 "새로운 개발 기술을 도입하고 싶지만 자사 내에는 전문가가 없다"며 "일본어 자원도 적어 개발을 추진할 수 있을지 모르겠다"고 덧붙였다.
    이어 "당사 구성원들은 개발을 추진하려고 하지만 지금까지 외부 공급업체에 의존해 개발해 도구와 기술에 대한 이해가 부족하다"고 덧붙였다.
    "UI를 새로 고치고 싶어요. UI 디자인과 UI/UX에 대한 논의 방법을 모르겠어요. 외부 디자인 회사에 의뢰하면 개발이 어렵지 않을까 걱정이에요."
    이런 상담을 받다.
    문의는 https://jp.infragistics.com/about-us/contact-us#contactform"target="blank">이쪽에서 하세요.

    좋은 웹페이지 즐겨찾기