CODEKILLER

반응형

@implements Razor 지시문을 사용하여 IDisposable을 선언하고,

public void Dispose() 함수를 추가함으로써, 페이지를 빠져나갈 때, 

리소스 해제할 수 있습니다.

 

@implements IDisposable

...

@code {
    ...

    public void Dispose()
    {
        obj?.Dispose();
    }
}

 

아래는 타이머를 사용중인 페이지에서 타이머를 해제하는 코드입니다.

@implements IDisposable

<h1>Test</h1>

<p>Timer</p>

@code {
    private int currentCount = 0;
    private Timer timer = new(1000);

    protected override void OnInitialized()
    {
        timer.Elapsed += (sender, eventArgs) => OnTimerCallback();
        timer.Start();
    }

    private void OnTimerCallback()
    {
        _ = InvokeAsync(() =>
        {
            currentCount++;
            StateHasChanged();
        });
    }

    public void Dispose() => timer.Dispose();
}

@implements Razor 지시문을 사용하여 IAsyncDisposable 을 구현합니다.

@implements IAsyncDisposable

...

@code {
    ...

    public async ValueTask DisposeAsync()
    {
        if (obj is not null)
        {
            await obj.DisposeAsync();
        }
    }
}
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band