그래서 C # 5의 새로운 비동기 지원에 대해 뭔가를 괴롭 혔습니다.
사용자는 비동기 작업을 시작하는 버튼을 누릅니다. 호출이 즉시 리턴되고 메시지 펌프가 다시 실행되기 시작합니다. 그게 요점입니다.
따라서 사용자가 버튼을 다시 누르면 재진입이 가능합니다. 이것이 문제라면?
내가 본 데모에서는 await
통화 전에 버튼을 비활성화하고 나중에 다시 활성화합니다. 이것은 실제 응용 프로그램에서 매우 깨지기 쉬운 솔루션 인 것 같습니다.
주어진 실행중인 작업 집합에 대해 어떤 컨트롤을 비활성화해야하는지 지정하는 일종의 상태 시스템을 코딩해야합니까? 아니면 더 좋은 방법이 있습니까?
작업 기간 동안 모달 대화 상자를 표시하고 싶었지만 슬레지 해머를 사용하는 것과 약간 같습니다.
누구든지 밝은 아이디어가 있습니까?
편집하다:
작업이 실행되는 동안 사용해서는 안되는 컨트롤을 비활성화하는 것은 깨지기 쉽다고 생각합니다. 나는 초기 코딩 및 후속 유지 보수 중 버그 가능성을 줄이기 때문에 일을 단순하게 유지하고 싶습니다.
특정 작업에 대해 비활성화해야하는 컨트롤 모음이 있으면 어떻게됩니까? 여러 작업이 동시에 실행 중이면 어떻게해야합니까?