Gå til innhold

Synkronisering med GUI-tråden


Anbefalte innlegg

Hei

 

Jeg driver å lager et internt mikrobibliotek for noen nettverksoperasjoner som skal oppdatere et GUI. I den forbindelse må jeg kjøre noen blokkerende kall for å vente på data fra nettverket. At biblioteket selv kjører opp en egen tråd er forsåvidt ikke noe problem, men her begynner synkroniserings-helvete.

 

Det jeg ønsker er at biblioteket selv sender callbacks (har opprettet delegater og events i biblioteket) på programmets gui-tråd. Slik at når eventene faktisk blir kjørt så skjer dette i Windows.Forms sin GUI-tråd helt uavhengig av hvilke komponenter som eksisterer. På den måten kan utvikleren som benytter biblioteket slippe å tenke på tråder osv når han dytter EventArg data inn i GUI'et. I Java kunne dette løses relativt enkelt ved hjelp av SwingUtils.invokeLater(). Noen som har en god måte å løse dette på ?

 

Videre er jeg litt usikker på funksjons-kall MOT biblioteket fra en annen tråd. F.eks. hvis man skal ha en knapp for å avslutte hele greia eller sende data må jo dette f.eks. operere mot Socket objektet...Dette objektet er også i bruk av den interne tråden. Noen tanker om dette?

 

Begge disse spørsmålene er ting jeg har lurt på i flere måneder (for personlige prosjekter) uten å finne noe svar så det kunne vært artig å fått svar på dette en gang for alle.

 

Dette var så mye enklere før man fikk GUI og slapp å tenke på at blokkerende kall fikk GUI-et til å henge seg :p

Endret av invictus
Lenke til kommentar
Videoannonse
Annonse
Vel nå skumleste jeg igjennom posten din, men etter det jeg kan se, er svaret på det første spørsmålet Control.Invoke

8929786[/snapback]

 

Var å referere til et bestemt komponent jeg ville unngå...men snakker om flaks for meg: en artikkel om nettopp dette problemet dukket for kort tid siden opp på codeproject:

 

http://www.codeproject.com/csharp/invoke_other_way.asp

 

Problemet er dermed løst :)

 

 

Lurer fremdeles på det andre da men :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...