@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();
}
}
}