victurus Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 Hei, Har en liten situasjon her Har satt igang en backgroundworker som kjører en prosess i bakgrunnen av en gui, som da gjenspeiler status osv.. Imidlertid får jeg opp en rar melding ved debuggging. main starter slik: Application.Run(new Meny()); Som starter backgroundworker. Videre rapporterer backgroundworker på følgende måte: bw.ReportProgress(20, new String[] { "90", "Henter andeler og kroner", "..." }); og min lytter: private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) { this.samlet_progressbar.Value = e.ProgressPercentage; String[] str = (String[])e.UserState; this.lille_progressbar.Value = int.Parse(str[0]); this.overskrift_lille_progress.Text = str[0]; } Denne oppdaterer to progressbarer og en label som er på den ene progressbaren. Imidlertid, kommenterer jeg ut de to nederste linjene kjører ting ok, men med en gang jeg tar med de to siste tilordningene så får jeg en Exception på Main() ?? "Exception has been thrown by the target of an invocation". -Men den greier da vitterlig å oppdatere den første progressbaren helt fint om jeg dropper de to nederste oppdateringene. ?? Victurus! Lenke til kommentar
GeirGrusom Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 Du må bruke Invoke funksjonen på formen for å endre verdien på en progressbar, grunnen til dette er at formens kontroller ikke er tilgjengelig på tvers av tråder. Invoke fungerer ved at den får tråden som eier formen, til å kalle en funksjon. Derfor må du legge til en funskjon som heter f.eks. SetProgressBarValue. Lenke til kommentar
Spartakus Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 Alle kontrollere bør vel la seg endre i ProgressChanged-eventet uten ekstra mas med Invoke/delegate? Lenke til kommentar
victurus Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 Alle kontrollere bør vel la seg endre i ProgressChanged-eventet uten ekstra mas med Invoke/delegate? Det er nettopp det jeg trodde var tilfellet og. -Og det som er litt merkverdig er at jeg får oppdatert en av progressbarene helt fint. Det er først når jeg blander inn en til og en oppdatering på en label at det blir problemer med invoke. Forstår ikke helt hvordan det kan være sånn Victurus! Lenke til kommentar
Spartakus Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 (endret) Jeg prøvde med samme kode som deg nå, funka fett. Jeg tror du får exeption i konvertering fra string-tall til integer? Pass på at det du konverterer faktisk er et tall, evnt håndtere tall med desimaler. Pass på å hold styr på index'ene i UserState-objektet (string array) ditt. Jeg ser du bruker samme index to ganger, men det er kanskje meninga. Edit: Sjekk at verdiene du oppdaterer progressBar IKKE overstiger MaximumValue-property'en (default: 100) Dette vil også kaste en exception Endret 25. juli 2007 av xtc Lenke til kommentar
GeirGrusom Skrevet 25. juli 2007 Del Skrevet 25. juli 2007 Hvis dere parser, så bruk TryParse, og ikke Parse Lenke til kommentar
victurus Skrevet 25. juli 2007 Forfatter Del Skrevet 25. juli 2007 Takker for responsen, dere sparte meg for mye hodebry Det viste seg at det var igjen en "gammel" report i koden, som ikke sendte med et String array, som da videre produserte en exception ved tilordningen. Dog var det veldig deilig at kodesnutten fungerte, sparte meg for veldig mye omlegging! Victurus! Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå