Dzień dobry,
w komponencie rodzica próbuje zmienić zawartość zmiennej CounterActivateUser dla komponentu dziecka HeaderMenu
<HeaderMenu username=@FullNameOfuser CounterActivateUser=@CounterActivateUser /></div>
Operacja zmiany zmiennej ma odbywać się w tle co minute:
private void ExecuteBackgroundTask(object state)
{
// Wywołaj metodę, która ma być wykonywana co minutę
_ = BackgroundProcedureAsync();
}
private async Task BackgroundProcedureAsync()
{
CheckLogout();
StateHasChanged();
}
private void CheckLogout()
{
var currentTime = DateTime.Now;
// Sprawdź, czy minęło 10 minut od ostatniej aktywności
if ((currentTime - lastActivityTime).TotalMinutes >= 10)
{
// Wywołaj funkcję wylogowania użytkownika lub przekieruj go do strony wylogowania
Navigator.NavigateTo("/", forceLoad: true);
}
else
{
CounterActivateUser = 10 - (Convert.ToInt32( (currentTime - lastActivityTime).TotalMinutes));
StateHasChanged();
}
}
Całość zainicjowana jest w komponencie rodzica
protected override async Task OnInitializedAsync()
{
...
timer = new Timer(ExecuteBackgroundTask, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
....
}
Komponent HeaderMenu (child)
<MudSpacer />
Autowylogowanie nastąpi za: @CounterActivateUser min.
<MudSpacer />
<MudIcon Icon="@Icons.Material.Filled.Person" />
<MudText>Zalogowany: <b>@username</b>
....
[Parameter]
public int CounterActivateUser { get; set; }