A
@Optimizer: 2. Fall Genitiv, des Delegaten (hab ich recht? War in Deutsch ne Niete. Hatte auf der Realschule in der Abschlussprüfung eine 5 geschrieben. Mit na mündlichen 3 konnte ich mich zum Glück wieder auf die 4 retten), kann sein dass ich es vorher falsch verwendet habe.
@Interpreter: Wie gesagt, ich kenne mich da noch nicht aus. Und Ja, ich rufe einfach nur den Delegat auf, damit er die ihm zugewiesenen Funktionen benachrichtigt.
@ All: Ich sag jetzt einfach mal wofür ich es brauche.
Ich lade eine Datei herunter. Während die runtergeladen wird, ermittle ich in einem Worker-Thread, was schon heruntergeladen wurde, und wie groß die Datei eigentlich ist. Rundum läufts letztendlich darauf hinaus, dass ich einen Status konstruiere, der mir am Ende einen String ausgibt. Diesen String übergebe ich dann einfach einem Label.
Und da sich mein Debugger (aber nicht das fertige Programm) dann immer beschwert, dass ich aus einem Worker Thread auf ein Element in der Dialogfeldklasse zugreife,
Illegal cross-thread operation
und ich den Tipp bekommen habe, ich solle dies über Events regeln, wollte ich das eben über Events regeln.
Wenn ich euch jetzt noch sage, warum ich überhaupt bei C# gelandet bin, werdet ihr mich hier gleich für komplett Irre abgestempeln .
Ich war ursprünglich bei Visual C++ 6.0 (da war das mit den Threads und den Zugriff auf die Dialogfeldklasse viel einfacher). Ich habe es jedoch nach 4 Wochen nicht auf die Reihe bekommen einen DownloadStatus hinzuzufügen. Kurzum, nach 4 Foren, auch dieses hier, und keiner richtigen Antwort, wollte ich einfach mal C# ausprobieren. Hab mal flinke flinke in 2 Tagen das Galileo OpenBook durgewerkelt. Bin auf den Tip gestoßen, dass Microsoft ein Visual C# als Beta umsonst vergibt, und hab mir das gesaugt.
Dann habe ich meinen FTP-Client komplett neu aufgesetzt. Jetzt kann ich anstandslos, während des Downloads, die Daten abfragen, aber nicht setzen. Vorher wars umgekehrt. So und hier bin ich. Die 4 Wochen waren schon im Dezember zu Januar hin. Der Download und das durcharbeiten von Galileo OpenBook war letzte Woche.
So aber das wolltet ihr garnicht wissen. Summa Summarum. Nur wegen eines Download Status' habe ich die Sprache gewechselt. Und jetzt finde ich sie garnicht schlecht, bis auf diese "Kinderkrankheiten" (mein NICHT-Können) die ich mit Visual C++ einfach nicht hatte.
So und nu wieder zurück zum Thema, mit dem String der sich ändert, wäre es jetzt schön, wenn diese Änderung des Strings (in einem Worker Thread) das Event wäre, welches den Code dazu veranlasst, den String in das Label zu übernehmen.
Den String würde ich dann als globale Variable in der Dialogfeldklasse deklarieren. Und keine Sorge, auf die Zugriffbeschränkungen brauche ich nicht achten. Der Worker Thread ist der einzige, der auf die Variable zum Schreiben zugreift. Erst diese Änderung würde ja hinterher den Code dazu veranlassen, diese Variable in das Label zu übernehmen.
Gruß
Markus Seidl
PS: So und jetzt bin ich mir ziemlich sicher das keiner mehr Antworten möchte