46 lines
1018 B
Plaintext
46 lines
1018 B
Plaintext
@page "/counter"
|
|
@using System.Diagnostics
|
|
|
|
<PageTitle>Counter</PageTitle>
|
|
|
|
<h1>Counter</h1>
|
|
|
|
<p role="status">Current count: @_currentCount</p>
|
|
<p role="status">Runtime: @_stopwatch.Elapsed.ToString("g")</p>
|
|
|
|
|
|
<button class="btn btn-success" @onclick="Start">Start</button>
|
|
<button class="btn btn-danger" @onclick="Stop">Stop</button>
|
|
<button class="btn btn-secondary" @onclick="Reset">Reset</button>
|
|
|
|
@code {
|
|
private int _currentCount = 0;
|
|
private bool _cancel;
|
|
private readonly Stopwatch _stopwatch = new();
|
|
|
|
private async Task Start()
|
|
{
|
|
_stopwatch.Start();
|
|
_cancel = false;
|
|
while (!_cancel)
|
|
{
|
|
_currentCount++;
|
|
StateHasChanged();
|
|
await Task.Delay(10);
|
|
}
|
|
_stopwatch.Stop();
|
|
}
|
|
|
|
private void Stop()
|
|
{
|
|
_cancel = true;
|
|
}
|
|
|
|
private void Reset()
|
|
{
|
|
_cancel = true;
|
|
_currentCount = 0;
|
|
_stopwatch.Reset();
|
|
}
|
|
}
|