Avatar billede thomaxz Nybegynder
08. oktober 2007 - 13:36 Der er 5 kommentarer og
1 løsning

Events fra klasse, gir trådproblem i form

Jeg laver en lille klasse, hvor jeg har lavet nogle eventhandler.

Dem tilføje jeg så i hovedformen.

men når en event så blir kaldt.
kan jeg ikke bruge komponeter for formen fordi de er en forkert tråd.

jeg ved godt hvordan jeg kan løse det på hoveformen, men jeg vil gerne have at min klasse sørger for at hovedformen ikke skal tænke på det.

min struct

public struct datafile
        {
            public byte[] byte_data;
            public string data;
        };

public delegate void OnFileOpenHandler(datafile filedata);

public event OnFileOpenHandler OnFileOpen;

private void iFunc(byte[] data)
{
datafile iFDATA;
iFDATA.byte_data = data;
IFDATA.data =System.Text.Encoding.UTF8.GetString(iFDATA.byte_data);

  if (this.OnFileOpen != null)
            {               
                this.OnFileOpen(iFDATA);
            }
}

hvad kan jeg gør for læse tråd problemmet fra klassen?
Avatar billede thomaxz Nybegynder
08. oktober 2007 - 13:54 #1
hvad kan jeg gør for læse tråd problemmet fra klassen?
->

hvad kan jeg gør for løse tråd problemmet fra klassen?
Avatar billede lasserasch Juniormester
08. oktober 2007 - 14:35 #2
Så vidt jeg ved er det nødvendigt at invoke når man arbejder med flere tråde.

Men kun hvis noget på UI skal ændres. Jeg kan ikke ud fra din kode her se at du tjekker på om der er brug for dette.

Men "this.OnFileOpen(@param)" hvilket kald er det?

/Lasse
Avatar billede thomaxz Nybegynder
08. oktober 2007 - 16:03 #3
Jeg har lavet en klassse, i den har jeg en event OnFileOpen

i min form skriv jeg KlasseNavn Varnavn=KlasseNavn();

VarNavn.OnFileOpen+=new OnFileOpenHandler(funcnavn);

i min ofrm har jeg så en function

private void funcnavn(Klassenavn.datafile data)
{

}

men når jeg så vil brug en kontrol når event er kaldt får jeg tråd problem.

jeg kan sagtens løse det i formen funcnavn, men jeg ønmsker at løse det fra klssens side, så koden i hovedformen ikke skal tage højde for det.
Avatar billede thomaxz Nybegynder
10. oktober 2007 - 09:23 #4
nu har jeg også prøvet flg. i min Ifunc funktion

//this.OnFileOpen(iFDATA);
                //invoke(new OnFileOpenHandler(OnFileOpen),new object[] {iFDATA});
                //OnFileOpen(iFDATA);
                //iForm.Invoke(new OnFileOpenHandler(OnFileOpen), new object[] { iFDATA });
                //this.OnFileOpen.Invoke(iFDATA);
                //this.OnFileOpen.Invoke(new OnFileOpenHandler(OnFileOpen));
                //OnFileOpen.Invoke(iFDATA);

men ingen af dem virker, har fundet at det er fordi jeg har en AsynCallabck funktion og den skaber en ny tråd, nu vil jeg så tilbage til den oprindeltråd så hovedformen eventhandler ikke skal tænke på det.
Avatar billede thomaxz Nybegynder
10. oktober 2007 - 10:14 #5
En lille tanke, når det er hovedformens tråd der abbonere på eventen, og anden tråd så kalder den, hvorfor kalder den ikke event i hovedformenstråd som jo abbonere på den?

og det må da være muligt at sørgere fra klassen side at event bli´r kaldt på hovedformenstråd.
Avatar billede thomaxz Nybegynder
22. januar 2008 - 09:05 #6
Lukker, ingen brugbare svar.
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