Benutzer mit den meisten Antworten
Object bei webclient compleded ansprechen

Frage
-
Hallo Leute,
ich nutze diesen Code, um einen String zu laden.
public void DownloadString(Uri uri) { try { WebClient client = new WebClient(); client.DownloadStringCompleted += Client_DownloadStringCompleted; client.DownloadStringAsync(uri); } catch (Exception) { MessageBox.Show("Fehler!", "Fehlercode: 2", MessageBoxButton.OK); } } private DownloadStringCompletedEventHandler Client_DownloadStringCompleted(object sender) { try { anfrageergebnis = e.Result; } catch (Exception) { MessageBox.Show("Fehler!", "Fehlercode: 1", MessageBoxButton.OK); } }
aufgerufen wird das ganze mit:
DownloadString(new Uri("[URL]", UriKind.Absolute));
Aber wie bekomme ich es hin, das wenn das Objekt "Bild" diese Funktion aufruft am Ende auch den String bekommt?
Kleines Beispiel: Image "bild" -> Startet Abfrage -> Es wird abgefragt -> Abfrage beendet und String heruntergeladen -> String an Image "bild" übergeben -> Image "bild" macht etwas damit
Dabei sollte das ganze möglichst dynamisch sein, damit ich die Abfrage mit mehreren Objekten starten kann.
Bitte helft mir!
MFG Onlineaffe
- Bearbeitet onlineaffe Sonntag, 27. Mai 2012 21:43
Sonntag, 27. Mai 2012 20:14
Antworten
-
Ich habe das so verstanden, dass mit dem Überfahren der Maus der asynchrone Ladeprozess gestartet wird. Wenn dann das Laden fertig ist, wird die Anzeige aktualisiert. Die Maus kann dann schon irgendwo anders sein.Wenn das so gemeint ist, dann reicht ein NotifyPropertyChanged zum Ende das Ladevorgangs. Die Oberfläche holt sich die die Daten aus den gebundenen Eigenschaften, die mit PropertyChanged mitgeteilt wurden.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Daniel Bedarf Dienstag, 10. Juli 2012 12:35
- Als Antwort markiert Robert Breitenhofer Freitag, 27. Juli 2012 11:41
Dienstag, 29. Mai 2012 05:47 -
Am einfachsten ist es, wenn “anfrageergebnis” eine Eigenschaft in der Klasse “Bild” ist. Im Moment der Zuweisung wird der Setter aufgerufen. Dort kann man den Code platzieren, der dann die gewünschten Funktionen ausführt.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Daniel Bedarf Dienstag, 10. Juli 2012 12:35
- Als Antwort markiert Robert Breitenhofer Freitag, 27. Juli 2012 11:41
Montag, 28. Mai 2012 06:16
Alle Antworten
-
Am einfachsten ist es, wenn “anfrageergebnis” eine Eigenschaft in der Klasse “Bild” ist. Im Moment der Zuweisung wird der Setter aufgerufen. Dort kann man den Code platzieren, der dann die gewünschten Funktionen ausführt.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Daniel Bedarf Dienstag, 10. Juli 2012 12:35
- Als Antwort markiert Robert Breitenhofer Freitag, 27. Juli 2012 11:41
Montag, 28. Mai 2012 06:16 -
Danke erst einmal für die Antwort.
Aber was mache ich nun, wenn angenommen: ich lade einen neuen URL zu einer Source für mein Image objekt runter (ich weiß schlecht formuliert) und ich möchte das sich das Bild von dem objekt ändert der es aufgerufen hat. Also mache ich einen Hovereffekt und gehe mit meiner Maus über das Image mit dem namen bild soll Bild diese Funktion aufrufen und auch den heruntergeladenen Source bekommen. Sollte ich allerdings 2 sekunden später mit der maus über dem image mit dem namen halihallo gehen sollte die neu heruntergeladene Source dann für halihallo gelten. Dabei möchte ich natürlich nicht für jedes objekt eine neue Funktion schreiben.
Montag, 28. Mai 2012 07:14 -
Einfacher ist es, über NotifyPropertyChanged der Oberfläche mitzuteilen, dass sich die Datenquelle geändert hat. Dann holt sich die Oberfläche die neuen Daten selbst. Ansonsten solltest Du mal genau beschreiben, welche Ereignisse in welcher Reihenfolge was bewirken sollen.--
Viele Gruesse
Peter- Bearbeitet Robert Breitenhofer Dienstag, 29. Mai 2012 06:31 Formatierung
Montag, 28. Mai 2012 13:03 -
Ich möchte um genau zu sein, das wenn ich mit der Maus über ein Image gehe, das dieses dann ein neues Source bekommt. Ich hatte mir gedacht, dass ich downloadcompleded irgendwie mitgebe, welches image den Download ausgelöst hat und direkt in donwloadcompleded das bild ändere.Montag, 28. Mai 2012 13:15
-
Ich habe das so verstanden, dass mit dem Überfahren der Maus der asynchrone Ladeprozess gestartet wird. Wenn dann das Laden fertig ist, wird die Anzeige aktualisiert. Die Maus kann dann schon irgendwo anders sein.Wenn das so gemeint ist, dann reicht ein NotifyPropertyChanged zum Ende das Ladevorgangs. Die Oberfläche holt sich die die Daten aus den gebundenen Eigenschaften, die mit PropertyChanged mitgeteilt wurden.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Daniel Bedarf Dienstag, 10. Juli 2012 12:35
- Als Antwort markiert Robert Breitenhofer Freitag, 27. Juli 2012 11:41
Dienstag, 29. Mai 2012 05:47 -
Vielen Dank.
ich weiß das diese Frage nun schon fast zu viel verlangt ist, doch könnten Sie wohl so gütig sein mit diesen Code, um diese Funktion, zu ändern ?public void DownloadString(Uri uri) { try { WebClient client = new WebClient(); client.DownloadStringCompleted += Client_DownloadStringCompleted; client.DownloadStringAsync(uri); } catch (Exception) { MessageBox.Show("Fehler!", "Fehlercode: 2", MessageBoxButton.OK); } } private DownloadStringCompletedEventHandler Client_DownloadStringCompleted(object sender) { try { anfrageergebnis = e.Result; } catch (Exception) { MessageBox.Show("Fehler!", "Fehlercode: 1", MessageBoxButton.OK); } } public void mouseover(object sender){ DownloadString(new Uri("[URL]", UriKind.Absolute)); }
Ich wäre Ihnen zu tiefst verbunden.
MFG Onlineaffe
Dienstag, 29. Mai 2012 14:47