2010-10-04 4 views
0

Un service WCF accéder à une base de données SQL:paramètres ou arguments en service WCF

private void GetImagesDataFromDB(int imageIndex, int **extraParam**) 
    { 
     ServiceReference1.DbServiceClient webService = 
      new ServiceReference1.DbServiceClient(); 
     webService.GetSeriesImagesCompleted += new EventHandler<ServiceReference1.GetSeriesImagesCompletedEventArgs>(webService_GetSeriesImagesCompleted); 
     webService.GetSeriesImagesAsync(imageIndex); 
    } 

le GetImageSeriesCompleted EventHandler est ici:

void webService_GetSeriesImagesCompleted(object sender, 
     TheApp.ServiceReference1.GetSeriesImagesCompletedEventArgs e) 
    { 
     if (e.Result != null) 
     { 
      if (**extraParam** == 1) 
      { 
       lstImages = e.Result.ToList(); 

      } 
      else 
      { 
       // do something else 
      } 
     } 
    } 

Le service lui-même est comme ceci:

public List<Image> GetSeriesImages(int SeriesId) 
    { 
     DataClassDataContext db = new DataClassDataContext(); 
     var images = from s in db.Images 
        where s.SeriesID == SeriesId 
        select s; 
     return images.ToList(); 
    } 

Quelle est la meilleure façon de passer le extraParam à le service a-t-il terminé EventHandler? J'en ai besoin pour diriger mon retour de service vers un contrôle d'interface utilisateur approprié.

Merci.

Répondre

0

Vous l'avez probablement déjà compris, mais l'appel webService.GetSeriesImagesAsync() a une deuxième surcharge, à savoir webService.GetSeriesImagesAsync (int seriesId, object userState). Ce second paramètre sera passé dans le rappel en tant que e.UserState. Un bon motif est en fait de passer un callback lambda comme userstate, et de l'exécuter dans la méthode webService_GetSeriesImagesCompleted().

+0

Merci Ken, je viens de recevoir votre suggestion et j'ai aimé. Non, je ne l'ai pas compris, mais plutôt trouvé un moyen de contourner (comme toujours) :-) – val

Questions connexes