Avatar billede lasserasch Juniormester
28. november 2023 - 08:48 Der er 1 kommentar og
1 løsning

Inspiration til GUI opdatering fra Service lag.

Hejsa.

Jeg søger lidt inspiration til en mere korrekt/pæn måde at gøre dette på.

Jeg har en helt klassisk 3 lags struktur i min arkitektur. Altså et GUI lag med min Winforms Applikation og et Service lag til forretningslogik og lidt database i et seperat lag.

Min winforms applikation kalder en masse forskellige metoder i servicelaget. Disse kommunikerer med et bagvedliggende XAL system.

Jeg har brug for at kunne opdatere min GUI direkte fra service laget, men selvfølgelig uden at have en hård kobling mellem lagene.

Pt. har jeg en masse "grim" kode i mit gui lag, som skriver noget omkring hvad det er der sker i applikationen. Dette ville jeg gerne af med og overgive ansvaret til metoderne i servicelaget.

Sådan at servicelaget kunne broadcaste statusbeskeder i sin logik, og GUI laget så kunne subscribe til dem og opdaterer en label eller lign.

Tænker der må være gode og forholdsvis simple løsninger til det?

Screenshot af en af mine grimme metoder i GUI laget. https://prnt.sc/U1HFM8tQ3VIw


Altså noget ala :

Service lag metode :

public void DoSomething()
{
  for (int i = 0; i < 100; i++)
  {
    // Noget som kan broadcaste status ala "Behandler record {i} af 100".
  }
}



Gui Lag metode :

public void Knapklik()
{
  _service.DoSomething();
}



Håber det giver mening.
Avatar billede lasserasch Juniormester
28. november 2023 - 09:25 #1
Never mind. Det var selvfølgelig løseligt med eventhandlers.
Avatar billede arne_v Ekspert
28. november 2023 - 19:29 #2
Helt generelt løses problemet med en pub-sub model. .NET har så en elegant måde at implementere det på med delegate og event.

https://en.wikipedia.org/wiki/Event_(computing)#Delegate_event_model
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester