Deux méthodes de client Web s'exécutent l'une après l'autre.Fonction ne s'exécutant pas dans l'ordre pas à pas correct
Le problème est, le premier qui exécute seulement finit l'exécution après le second. Mon problème principal est que, pour que la deuxième méthode puisse s'exécuter, la première méthode doit d'abord être complétée parce que la seconde méthode exige que les données de la première méthode soient exécutées avec succès.
{
string name;
string surname;
string url1 =" //sample/1";
string url2 ="//sample/2";
//execution point!
public void ListBox_SelectionChagned(Object sender, SelectionChangedEventArgs e)
{
var sel = ((ListBox)ContextMenuPopup.Child).SelectedItem;
SubName = Convert.ToString(sel);
try
{
WebClient webClient = new WebClient();
Uri uri = new Uri(url1);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted1);
webClient.OpenReadAsync(uri);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
WebClient webClient = new WebClient();
Uri uri = new Uri(url2 + name);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted2);
webClient.OpenReadAsync(uri);
System.Diagnostics.Debug.WriteLine(url2 + name);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//Method1
void webClient_OpenReadCompleted1(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
ser = new DataContractJsonSerializer(typeof(ObservableCollection<Subscriptions>));
ObservableCollection<Subscriptions> alldata = ser.ReadObject(e.Result) as ObservableCollection<Subscriptions>;
foreach (data _dt in alldata)
{
name = First_Name;
surname = Surname;
System.Diagnostics.Debug.WriteLine("My first name " + name);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//Method2
void webClient_OpenReadCompleted2(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
ser = new DataContractJsonSerializer(typeof(ObservableCollection<Subscriptions>));
ObservableCollection<Subscriptions> alldata = ser.ReadObject(e.Result) as ObservableCollection<Subscriptions>;
foreach (data _dt in alldata)
{
name = First_Name;
surname = Surname;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public class data
{
public string First_Name { get; set; }
public string Surname { get; set; }
}
}
Résumé: Je dois obtenir la valeur « nom » dans la première méthode et l'utiliser pour ajouter mon url2 dans la deuxième méthode?
mais ma deuxième méthode se termine avant ma première méthode?