我有這樣更新實例之前,繼續在同一命令
public void LoadProgrammeListFromChannel(TVDailyScheduleParam scheduleParam, Action callback)
{
string url = Helper.GetProgrammeUrl(scheduleParam.Day, scheduleParam.Channel.Id); //1//
WebClient client = new WebClient(); //2//
client.OpenReadCompleted += new OpenReadCompletedEventHandler((sender, e) => //3//
{//5//
if (e.Error != null)
return;
try
{
_programmeList.Clear();
_programmeList = DataService.GetProgrammeList(e.Result);
// call method in MainVM to update View
callback();
}
finally
{
// close file stream
e.Result.Close();
}
});
client.OpenReadAsync(new Uri(url, UriKind.Absolute)); //4//
}
的方法運行第二個方法,我有這樣的
LoadWhatsonProgrammeCommand = new RelayCommand(()=>
{
foreach (TVDailyScheduleParam param in _tvDailyScheduleVM.ChannelList.Select(c => new TVDailyScheduleParam(DateTime.Today, c, false)))
{
TVDailyScheduleParam param2 = param;
_tvDailyScheduleVM.LoadProgrammeListFromChannel(param2,()=>
{
RaisePropertyChanged(TV_DAILY_SCHEDULE_VM);
});
_tvDailyScheduleVM.GetWhatsonProgramme(param2,()=>
{
RaisePropertyChanged(TV_DAILY_SCHEDULE_VM);
});
}
});
一個cammand現在,當我調用該命令。起初它運行_tvDailyScheduleVM.LoadProgrammeListFromChannel
並調用LoadProgrammeListFromChannel
方法。
在LoadProgrammeListFromChannel
方法中,它從1 - > 2 - > 3運行。在3時,它沒有完成,它運行到4,然後返回到命令並繼續運行_tvDailyScheduleVM.GetWhatsonProgramme
。
但是_programmeList in LoadProgrammeListFromChannel
沒有更新,因此GetWhatsonProgramme
沒有完全運行。
如何在運行_tvDailyScheduleVM.GetWhatsonProgramme
之前回到LoadProgrammeListFromChannel
以運行3更新_programmeList
?