У меня есть приложение Silverlight, которое получает данные из базы данных через службу WCF. Мое приложение должно отображать референтные данные каждый раз, когда кнопка получает MouseOvered. Я сделал это так, чтобы, когда кнопка получала MouseOvered, я вызывал свой сервис и извлекал данные, но это вызывало большую задержку. Теперь я думаю, что другим способом должно быть создание списка всех объектов из таблицы и просто поиск идентификатора в списке, когда действие запускается. Я начал кодировать, но это привело к сбою (и такой уродливый кусок кода).
Мой рабочий код
private void MouseOverHarbor(object sender, RoutedEventArgs e)
{
Ellipse thisPath = (Ellipse)sender;
DataRetrieverReference.DataRetrieverClient webService = new DataRetrieverReference.DataRetrieverClient();
webService.GetDataCompleted += new EventHandler<DataRetrieverReference.GetDataCompletedEventArgs>(webService_GetDataCompleted);
webService.GetDataAsync(Convert.ToInt32(thisPath.DataContext));
}
void webService_GetDataCompleted(object sender, WebPortos.DataRetrieverReference.GetDataCompletedEventArgs e)
{
NameField.Text = e.Result.Name;
CityField.Text = e.Result.City;
StateField.Text = e.Result.State;
CompanyField.Text = e.Result.Company;
}
Что я пытался сделать
private List<vwPortos_SEP> harborList;
private int counter;
public Brasil()
{
InitializeComponent();
this.harborList = new List<vwPortos_SEP>();
DataRetrieverClient webService = new DataRetrieverClient();
webService.GetCounterCompleted += new EventHandler<GetCounterCompletedEventArgs>(webService_GetCounterCompleted);
webService.GetCounterAsync();
webService.GetDataCompleted += new EventHandler<DataRetrieverReference.GetDataCompletedEventArgs>(webService_GetDataCompleted);
for (int i = 0; i < counter; i++)
{
webService.GetDataAsync(i);
}
}
void webService_GetDataCompleted(object sender, WebPortos.DataRetrieverReference.GetDataCompletedEventArgs e)
{
MessageBox.Show("It works!");//It doesn't work!
try
{
this.harborList.Add(e.Result);
}
catch (Exception exc)//It doesn't even throw ecxpetions, this method is never reached.
{
MessageBox.Show(exc.Message);
MessageBox.Show(exc.InnerException.Message);
}
}
Может быть, я упускаю что-то действительно большое, но мой метод webService_GetDataCompleted
никогда не достигается.
Заранее спасибо, ребята!