두 가지 방법이있는 웹 서비스가 있습니다.한 번만 실행하는 이벤트 처리기/상태 시스템 설계 중?
RetrieveFirstLevelOptions() 및 RetrieveSecondLevelOptions (int levelOneOption).
GUI에는 FirstLevelOptionsCombo 및 SecondLevelOptionsCombo의 두 가지 콤보 상자가 있습니다.
RetrieveFirstLevelOptions()에 요청을해야 할 때 초기화 단계에 대한 제어 흐름을 생성하는 데 문제가 있습니다. 그런 다음 결과가 나오면 RetrieveSecondLevelOptions (기본 levelOneOption = 0)를 호출합니다.
문제는 모든 것이 비동기 적으로 발생하기 때문에이 동작을 처음부터 한 번만 수행하면 좋은 방법이 무엇인지 알 수 없습니다.
내가 선호하는 옵션은 RetieveFirstLevelOptionsCompleted 이벤트에 두 번째 이벤트 처리기를 연결하고 한 번만 실행 한 후에 자체를 제거하도록하는 옵션입니다. 그러나 그런 행동은 불가능한 것처럼 보입니다.
또 다른 옵션은 초기화 단계에 있는지 여부를 나타내는 부울 플래그를 갖는 것입니다. 그렇다면 RetrieveFirstLevelOptionsCompleted의 핸들러가 일부 추가 로직을 실행합니다. 그러나이 아이디어는 모든 이벤트 처리기가 상태 정보를 확인하고 현재 상태에 따라 다른 작업을 수행해야하는 것처럼 보입니다. 제어 흐름이 하향식으로 보이기 때문에 이것은 나쁜 설계 인 것 같습니다.
한 지점에서 결정을 내리는 중앙 집중식 제어 흐름 메커니즘이 필요합니다. 그러나 모든 것이 비동기 적으로 실행될 때 어떻게 할 수 있습니까?
왜 "가 한 번 실행 된 후 이벤트 핸들러를 제거"불가능 얻을 수있다 :
어떤 이유로이 작동하지가되어 있습니까? –
견적은 "한 번만 실행하면 자체 제거"입니다. 이 기능을 작동시키는 방법을 안다면 분명히보고 싶을 것입니다. 그렇지 않으면, 우리는 상태 머신 아이디어로 되돌아갑니다. – Rire1979