
#naukaprogramowania #programowanie #csharp
Mam aplikację jak na rysunku.
Są sobie okna które mają referencję na maszynę stanów, która normalnie jest dostępna z "Kontrolera okien".
Okna mogą przekazywać dane do maszyny stanów, by ta mogła decymować co jest do zrobienia dalej.
I teraz jest pytanie jak z okna wywołać wątek działający wewnątrz tej maszyny stanów, który coś policzy i na podstawie wyniku zmienić treść wyświetlanego okna następnego chwile po jego wyświetleniu?
Konkretne zadanie, chce po kliknięciu guzika, ściągnąć dane z serwera, wtedy użytkownik może kliknąć "dalej" aby przejść do następnego okna, i tam powinny już czekać przetworzone dane. nie będzie to trwało długo bo danych jest malutko, nie mniej lepiej jest chyba nie wstrzymywać wykonania programa na ten czas.
Mam aplikację jak na rysunku.
Są sobie okna które mają referencję na maszynę stanów, która normalnie jest dostępna z "Kontrolera okien".
Okna mogą przekazywać dane do maszyny stanów, by ta mogła decymować co jest do zrobienia dalej.
I teraz jest pytanie jak z okna wywołać wątek działający wewnątrz tej maszyny stanów, który coś policzy i na podstawie wyniku zmienić treść wyświetlanego okna następnego chwile po jego wyświetleniu?
Konkretne zadanie, chce po kliknięciu guzika, ściągnąć dane z serwera, wtedy użytkownik może kliknąć "dalej" aby przejść do następnego okna, i tam powinny już czekać przetworzone dane. nie będzie to trwało długo bo danych jest malutko, nie mniej lepiej jest chyba nie wstrzymywać wykonania programa na ten czas.

- Najlepsze
- Wszystkie komentarze







Ale w Windows Forms też można uzyskać aktualizowanie UI z wątków roboczych bez blokowania.
Maszyna implementuje INotifyPropertyChanged i nie musi wiedzieć kto z niej korzysta. Poczytaj o MVVM.
czyli jak
Okno1.Kontrolka.klikniete()
{
// tutaj odpalasz wątek, czy event ktory uruchomi kod do pobierania
Poczytaj sobie dokumentację bo jest bardzo dobra.
(wcześniej dałem stary link)
https://docs.microsoft.com/en-gb/dotnet/api/system.threading.tasks.task?view=netframework-4.7.1
@qubeq: