访问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控件。
感谢。
答案 0 :(得分:0)
您现在可能已经想到了这一点,但是webService.GetSeriesImagesAsync()调用有第二个重载,即webService.GetSeriesImagesAsync(int seriesId,object userState)。第二个参数将作为e.UserState传递给回调。一个好的模式实际上是将lambda回调作为userstate传递,并在webService_GetSeriesImagesCompleted()方法中执行它。