Avatar billede ladefoged Nybegynder
23. maj 2007 - 19:59 Der er 2 kommentarer og
1 løsning

Event handler

Jeg er ved at lave et lille program med ftp funktion, der til har jeg fundet BytesRoad.NetSuit Library 2.0 hvilket virker meget fint.

Jeg er så kommet der til hvor jeg gerne vil kunne se hvor meget der er uploadet af en fil altså en slags status. Der til har jeg fundet ud af af BytesRoad.NetSuit Library 2.0 har et event der hedder "DataTransfered", jeg sætter lige lidt beskrivelse ind omkring eventet

"Occurs when FtpClient transfered chunk of data via data channel to/from the FTP server.

[Visual Basic]
Public Event DataTransfered As DataTransferedEventHandler
[C#]
public event DataTransferedEventHandler DataTransfered;

Event Data
The event handler receives an argument of type DataTransferedEventArgs containing data related to this event. The following DataTransferedEventArgs properties provide information specific to this event.

Property Description
- LastTransfered
Gets number of bytes transfered since the last notification.
 
- WholeTransfered 
Gets the number of bytes transfered during current file transfering operation."

Så det eneste jeg skal have lavet mig er en event handler som reagere på DataTransfered og smider WholeTransfered tilbage.

Men da jeg er ny inden for C# så har jeg ikke kunnet finde ud af at gøre det, har læst adskellige artikler, men kan bare ikke rigtig forstå det.

Så er der en venlig sjæl som vil forklare mig hvordan jeg skal gøre eller give mig ligt kommenteret kode så jeg kan regne det ud
Avatar billede crazysnap Seniormester
24. maj 2007 - 09:48 #1
Hej ladefoged,


Hvis vi antager at denne her DataTransfered event er defineret inde i et objekt som hedder TestObject og at dens Handler kun har én parameter som er DataTransferedEventArgs kunne du lave en ny eventhandler således:



class SomeTestClass
{
    public SomeTestClass()
    {
        //Laver en ny instans af det objekt som indeholder din event
        TestObject to = new TestObject();

        //Sætter eventhandleren op ved brug af metoden nedenfor (DataTransfered_Event)
        to.DataTransfered += new DataTransferedEventHandler(DataTransfered_Event);
    }


    //Eventhandler til DataTransfered på TestObject'et med DataTransferedEventArgs
    //som eneste parameter. Typisk har man også en Object reference som parameter,
    //men af din beskrivelse ovenover lyder det ikke som om denne eventhandler har det.
    private void DataTransfered_Event(DataTransferedEventArgs e)
    {
        //Denne giver dig de bytes som er overført siden sidste notfikation
        e.LastTransfered;

        //Denne giver dig antallet af bytes overført ved sidste fil overførsel
        e.WholeTransfered
    }
}


Håber det her eksempel kan hjælpe dig på vej, ellers må du endelig skrive tilbage. :)



Mvh.

- Snap :)
Avatar billede ladefoged Nybegynder
24. maj 2007 - 17:46 #2
Tusind tak Snap, nu fik jeg det til at virke. Jeg skulle lige lege lidt med det, men din kode var en rigtig stor hjælp.

Den endelige test kode kom til at se sådan her ud:

//Test eventhandler
ftp.DataTransfered += new FtpClient.DataTransferedEventHandler(DataTransfered_Event);

private void DataTransfered_Event(object sender, DataTransferedEventArgs e)
{
    //Denne giver dig antallet af bytes overført ved sidste fil overførsel
    label1.Text = e.WholeTransfered.ToString();

    label1.Update();
}

Endnu engang tak, smid et svar så du kan få dine velfortjænte point :)
Avatar billede crazysnap Seniormester
24. maj 2007 - 19:21 #3
Hej ladefoged,


Det var da så lidt og jeg er glad for at høre du fik det til at virke! :)


Og her kommer svaret... :)


Mvh.

- Snap :)
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