WCF服务中的参数或参数

时间:2010-10-04 19:33:29

标签: wcf event-handling

访问SQL数据库的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);
    }

GetImageSeriesCompleted EventHandler在这里:

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

            }
            else 
            {
                // do something else
            }
        }
    }

服务本身就是这样:

   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();
    }

extraParam 传递给服务已完成的EventHandler的最佳方法是什么?我需要这个来指导我的服务返回到正确的UI控件。

感谢。

1 个答案:

答案 0 :(得分:0)

您现在可能已经想到了这一点,但是webService.GetSeriesImagesAsync()调用有第二个重载,即webService.GetSeriesImagesAsync(int seriesId,object userState)。第二个参数将作为e.UserState传递给回调。一个好的模式实际上是将lambda回调作为userstate传递,并在webService_GetSeriesImagesCompleted()方法中执行它。