У меня есть веб-сервис двумя способами:
RetrieveFirstLevelOptions () и RetrieveSecondLevelOptions (int levelOneOption).
Графический интерфейс содержит два комбинированных списка: FirstLevelOptionsCombo и SecondLevelOptionsCombo.
У меня проблемы с созданием потока управления для этапа инициализации, когда мне нужно сделать запрос к RetrieveFirstLevelOptions (), а затем, когда результаты получены, вызвать RetrieveSecondLevelOptions (по умолчанию levelOneOption = 0).
Проблема в том, что, поскольку все происходит асинхронно, я не знаю, каков наилучший подход, чтобы это поведение происходило один раз и только один раз в начале.
Вариант, который мне хотелось бы иметь, - это присоединить второй обработчик события к событию RetieveFirstLevelOptionsCompleted и заставить его удалить себя после запуска только один раз. Но похоже, что такое поведение невозможно получить.
Другим вариантом может быть наличие логического флага для указания того, находится ли на этапе инициализации, и если это так, то обработчик для RetrieveFirstLevelOptionsCompleted будет выполнять некоторую дополнительную логику. Однако из-за этой идеи все обработчики событий должны будут проверять информацию о состоянии и делать разные вещи в зависимости от текущего состояния. Это кажется плохим дизайном, потому что поток управления кажется децентрализованным.
Я хочу иметь механизм централизованного управления потоком, который будет принимать решения в одном месте. Но как это сделать, когда все выполняется асинхронно?