J'ai une application Silverlight qui récupère des données de la base de données via un service WCF. Qu'est-ce que mon application doit faire est d'afficher les données de référence chaque fois qu'un bouton obtient MouseOvered. Je l'ai fait d'une manière que quand un bouton obtient MouseOvered, j'ai appelé mon service et récupéré les données, mais il générera un grand retard. Maintenant, je pense qu'une autre façon devrait être de faire une liste de tous les objets de la table, et de simplement chercher l'identifiant dans la liste lorsque l'action est déclenchée. J'ai commencé à coder, mais il en a résulté un échec (et un tel morceau de code laid).Comment faire pour que les données de mon service WCF soient stockées dans mon application Silverlight?
Mon travail sur le code
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;
}
Ce que j'ai essayé de faire
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);
}
}
Peut-être que je manque quelque chose de vraiment grand, mais ma méthode webService_GetDataCompleted
est jamais atteint.
Merci d'avance les gens!