GUI를 업데이트해야하는 Windows Forms 응용 프로그램을 실행 중이므로 에이 있으면 현재 동기화 컨텍스트에서 오는 스케줄러를 사용할 수 있습니다. 코드 : TaskScheduler.FromCurrentSynchronizationContext()단위 테스트를 위해 TaskScheduler.FromCurrentSynchronizationContext()에서 스케줄러를 변경하십시오.
단위 테스트를 작성할 때 테스트에서 동시에 및 동 기적으로 실행되는 자체 스케줄러를 사용하기 때문에이 스케줄러를 전환해야합니다. 대안 (injection, ManualResetEvent)이 있지만 추한 것이고 우리는 원하지 않습니다.
리플렉션을 사용하여 개인 변수를 덮어 쓰면 TaskScheduler.Default를 수정할 수 있습니다. 그렇지만 TaskScheduler.FromCurrentSynchronizationContext()를 사용하여 동일한 작업을 수행하는 분명한 방법은 없습니다.
그래서 어떻게 할 수 있습니까?
어떻게 의존성 주입이 못생긴가? 적어도 나에게는 어리석은 소리가 난다. 나를 위해 그것은 당신이 달성하려고하는 소리 (개인 변수를 덮어 쓴다는 반영)은 못생긴 것이다. 더 나은 방법은 스케쥴러를 반환하거나 스케쥴러 자체를 삽입하는 팩토리를 삽입하는 것입니다. –
당신은 DI weird를 호출하지만, 반대로 리플렉션을 사용하여 클래스 내에서 개인 변수를 추출 할 수 있습니까? 나는 당신이 그것을 가지고 있다고 생각한다. :) –
그래, 내가 언급 한 추악한 것은 ManualResetEvent였다. 주입은 확실히 멋지지만 실제 질문은 남아 있습니다 : TaskScheduler.FromCurrentSynchronizationContext()에서 스케줄러를 어떻게 변경합니까? – imbageek