Ik ben bezig met een windowsapplicatie C# 3.5 (maar werkt waarschijnlijk vanaf 2.0). De applicatie is niet meer dan een schil voor een component (ook c#) die een aantal bewerkingen met .csv bestanden moet uitvoeren.
De component heeft twee events. Ze geven beide meldingen van de huidige actie. De 1ste geeft simpele melding (ben met deze file bezig en ben die actie aan het uitvoeren) de tweede geeft verbose meldingen waarin je overdonderd wordt met wat er allemaal gebeurd (das heel handig als er een fout in een csv bestand zit.
Ik heb de hoofdapplicatie op allebei de events laten "abonneren" en de verbose meldingen gaan naar een logvenster, de normale meldingen gaan naar het status labeltje. Niet echt spannend maar nu moet het in een nieuwe thread (omdat het soms heel lang duurt). Gewoon een nieuwe opstarten levert cross-thread problemen op.
Op deze lokatie een prima voorbeeld gevonden, ook het voorbeeld van David M Morton wat er onderstaat kan ik wel redelijk doorgronden maar nu moet ik het met de component doen en die twee events er ook nog op los laten maar dat snap ik niet helemaal. Ben nooit een kei geweest in event en delegates
http://msdn.microsoft.com...del.backgroundworker.aspx
Met deze code start in de component op (via een knop) en daaronder wat er verder met de events gebeurd:
Ik snap niet helemaal hoe ik dit moet vertalen naar een backgroundworker. Heeft iemand wel eens zoiets gedaan? Ik zou graag een beetje opweg worden geholpen.
Ik heb wel zitten kijken naar de InVokeRequired en de this.InVoke. Dat ging a.d.v. een voorbeeldje wel oke maar volgens mij zou het als je het goed wilt doen allemaal via de backgroundworker moeten (en ik begreep ook niet helemaal wat ik aan het doen was
). Moet ik dat InVoke testje bijvoegen ?
De component heeft twee events. Ze geven beide meldingen van de huidige actie. De 1ste geeft simpele melding (ben met deze file bezig en ben die actie aan het uitvoeren) de tweede geeft verbose meldingen waarin je overdonderd wordt met wat er allemaal gebeurd (das heel handig als er een fout in een csv bestand zit.
Ik heb de hoofdapplicatie op allebei de events laten "abonneren" en de verbose meldingen gaan naar een logvenster, de normale meldingen gaan naar het status labeltje. Niet echt spannend maar nu moet het in een nieuwe thread (omdat het soms heel lang duurt). Gewoon een nieuwe opstarten levert cross-thread problemen op.
Op deze lokatie een prima voorbeeld gevonden, ook het voorbeeld van David M Morton wat er onderstaat kan ik wel redelijk doorgronden maar nu moet ik het met de component doen en die twee events er ook nog op los laten maar dat snap ik niet helemaal. Ben nooit een kei geweest in event en delegates
http://msdn.microsoft.com...del.backgroundworker.aspx
Met deze code start in de component op (via een knop) en daaronder wat er verder met de events gebeurd:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| private void btnStartConversion_Click(object sender, EventArgs e) { // start conversion csv2kmllib.CsvConverter converter = new csv2kmllib.CsvConverter(); converter.VerboseConversionLogEvent += new csv2kmllib.VerboseConversionLogHandler(converter_VerboseConversionLogEvent); converter.ProcessConversionLogEvent += new csv2kmllib.ProcessConversionLogHandler(converter_ProcessConversionLogEvent); converter.Go(); } private void converter_VerboseConversionLogEvent(object sender, string message) { AddLogEntry(message); // naar een listbox } private void converter_ProcessConversionLogEvent(object sender, string message) { lblCurrentConversionProcess.Text = message; } |
Ik snap niet helemaal hoe ik dit moet vertalen naar een backgroundworker. Heeft iemand wel eens zoiets gedaan? Ik zou graag een beetje opweg worden geholpen.
Ik heb wel zitten kijken naar de InVokeRequired en de this.InVoke. Dat ging a.d.v. een voorbeeldje wel oke maar volgens mij zou het als je het goed wilt doen allemaal via de backgroundworker moeten (en ik begreep ook niet helemaal wat ik aan het doen was
