Benutzer mit den meisten Antworten
Ergebnis eines Webservice

Frage
-
Hallo,
Ich experimentiere gerade mit einem Webserviceder eine Methode
int Foo() anbietet.
und verwende diesen Code:
private void button1_Click(object sender, RoutedEventArgs e) { myService.TestwsClient service = new myService.TestwsClient(); service.FooCompleted+= new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(fertig); service.FooAsync("hallo"); } private void fertig(object sender, AsyncCompletedEventArgs e) { //hier Ergebniss abfragen? }
Wie komme ich an den Rückgabewert for Foo() ?
Wie werden Paramater an Foo übergeben (wenn welche nötig wären)?
Gruss jens
- Bearbeitet Robert Breitenhofer Mittwoch, 9. Juni 2010 07:27 Code Formatierung
Mittwoch, 9. Juni 2010 05:53
Antworten
-
Hi Jens,Deine Methode kann den Rückgabewert über e.Result bekommen, z.B. so:
private void button1_Click(object sender, RoutedEventArgs e) { myService.TestwsClient service = new myService.TestwsClient(); service.FooCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(fertig); service.FooAsync("hallo"); } private void fertig(object sender, AsyncCompletedEventArgs e) { //hier Ergebniss abfragen? string res = e.Result; }
--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Peter Fleischer Mittwoch, 16. Juni 2010 04:25
- Als Antwort markiert Robert Breitenhofer Mittwoch, 16. Juni 2010 06:37
Mittwoch, 16. Juni 2010 04:24
Alle Antworten
-
Hi Jens,wenn du eine SOAP-WebService meinst, dann geht das folgendermaßen:1. zur Übergabe von Parametern an den WebService ist in der aufzurufenden Web-Methode eine Liste formaler Parameter zu deklarieren, die dann in der Web-Methode genutzt werden können.2. in der Web-Methode kann ein Rückgabetyp deklariert werden.3. Beim Hinzufügen der WebReference im Projekt wird ein Proxy generiert, der sich aus der WSDL die Informationen zu den einzelnen Web-Methoden holt. Damit sind dann auch Parameter und Rückgabetyp bekannt. Ggf. werden auch für die Typbeschreibung der zu übergebenden Typen im Namensraum des Proxies Klassen generiert.4. Beim Aufruf der WebMethode in der Silverlight-Anwendung können die realen Parameterwerte übergeben werden (wie in deinem Codeauszug das "hallo").5. Als Typ für den EventHandler ist der vom Proxy generierte Typ einzusetzen.6. Im Proxy wird gleichfalls ein von EventArgs abgeleiteter Ereignistyp passend zum Typ des EventHandler bereitgestellt.7. In den von EventArgs abgeleiteten Ereignistyp gibt es die Eigenschaft "Result", die den Rückgabetyp liefert.In VB kann das so aussehen:
Imports System.ComponentModel Imports System.Collections.ObjectModel Imports System.Windows.Data Imports System.ServiceModel Namespace ViewModelTermine Public Class Termine Public Sub New() DataLoad() End Sub #Region " Properties" Public Property Termine() As ObservableCollection(Of verein.TerminRow) Private cv As ICollectionView Public ReadOnly Property TerminView() As ICollectionView Get With New CollectionViewSource ..Source = Me.Termine '.SortDescriptions.Add(New SortDescription("Name", ListSortDirection.Ascending)) cv = .View 'cv.SortDescriptions.Add(New SortDescription("Sort", ListSortDirection.Ascending)) Return cv End With End Get End Property #End Region #Region " WebService" Private WithEvents ws As verein.wsvereinSoapClient Private Sub DataLoad() ws.DataLoadTermineAsync(Now.Year) End Sub Private Sub ws_DataLoadTermineCompleted(ByVal sender As Object, ByVal e As verein.DataLoadTermineCompletedEventArgs) Handles ws.DataLoadTermineCompleted Me.Termine.Clear() For Each r1 In e.Result Me.Termine.Add(r1) Next End Sub #End Region End Class End Namespace
--
Viele GruessePeter- Bearbeitet Robert Breitenhofer Mittwoch, 9. Juni 2010 07:29 Code Formatierung
Mittwoch, 9. Juni 2010 06:40 -
Hi Jens,Deine Methode kann den Rückgabewert über e.Result bekommen, z.B. so:
private void button1_Click(object sender, RoutedEventArgs e) { myService.TestwsClient service = new myService.TestwsClient(); service.FooCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(fertig); service.FooAsync("hallo"); } private void fertig(object sender, AsyncCompletedEventArgs e) { //hier Ergebniss abfragen? string res = e.Result; }
--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Peter Fleischer Mittwoch, 16. Juni 2010 04:25
- Als Antwort markiert Robert Breitenhofer Mittwoch, 16. Juni 2010 06:37
Mittwoch, 16. Juni 2010 04:24