Avatar billede katrinexxx Nybegynder
02. januar 2009 - 18:14 Der er 3 kommentarer

Adgang fra 2. klasse til en forms kontroller (tråde&progressbar)

Hejsa i kloge hoveder derude.

Håber på lidt hjælp til følgende:
Jeg har en klasse, hvori jeg tjekker om en progressbar skal vises og tråden til at styre den startes. Problemet er at min klasse ikke kan "se" progressbaren på formen - og jeg kan ikke flytte koden over på formen, for så ved jeg ikke om den skal startes... What to do?
Jeg ville gerne have følgende liggende i min kaldende klasse...

public void progressbarStart()
{
  for (int i = 0; i < 100; i++)
  {
      Thread.Sleep(100);
      progressbar.Increment(1);
  }
}
Jeg har forsøgt at lægge al koden direkte på formen - men så oplever jeg følgende.
Jeg har sat visible = false på formen (den skal kun vises, når tråden kører, men når jeg så prøver at køre programmet, så får jeg denne fejl, selvom det er det eneste sted jeg laver noget på progressbaren.
"Handling på tværs af tråde er ugyldig: Objektet 'Form' blev åbnet fra en anden tråd end den tråd, det blev oprettet i."

Håber på hjælp - og takker på forhånd!
Katrine.
Avatar billede annxii Nybegynder
03. januar 2009 - 02:36 #1
Du har fået det, der normalt hedder en Cross-Thread Exception. Hvis du vil have flere forskellige tråde til at køre på samme form skal dette synkroniseres. Dette sker ved at kalde "Invoke" på den form du vil snakke med. Invoke skal modtage en delegate indeholdende en metode du gerne vil køre.

prøv at opret en brugbar delegate:

public delegate void NoParameterDelegate();

...og erstat den linie hvor du kalder progressbarStart() med:

this.Invoke(new NoParameterDelegate(progressbarStart));
Avatar billede aaberg Nybegynder
03. januar 2009 - 20:54 #2
Avatar billede katrinexxx Nybegynder
04. januar 2009 - 10:22 #3
Mange tak - det virkede at bruge en delegate!
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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