2011-09-27 3 views
1

비동기 클래스로 작업하면서 종종 필드에 상태를 저장해야만 완료된 메서드에서 액세스 할 수 있습니다. 이상적으로, 필자는 필드에 상태를 저장하는 것을 피하고 싶습니다. 이는 여러 번의 호출과 필드 데이터에 대한 영향에 대해 걱정할 필요가 있다는 것을 의미합니다.범위를 잃지 않고 이벤트 처리기를 추가하고 분리 할 수있는 방법이 있습니까?

Resharper가 나에게 '수정 된 공개 액세스'경고를 주지만이 코드 블록을 작성했습니다.

public void Test(Action<Result> result) 
{ 
    var myClass = new MyClass(); 
    EventHandler eventHandler = null; 
    eventHandler = (s, e) => 
         { 
          var mc = (MyClass) s; 
          mc.Completed -= eventHandler; 
          result(mc.Result); 
         }; 
    myClass.Completed += eventHandler; 
    myClass.Run(); 
} 

문제는이 코드 블록이 있고하지 않을 경우, 데이터를 저장 및 범위의 어떤 수준이 여전히 존재하는지 확인하기 위해 필드를 작성하지 않고이 작업을 수행 할 수있는 더 좋은 방법은 무엇입니까?

답변

1

이 컨텍스트에서 익명의 대리인을 사용하는 것이 좋습니다. 특정 ReSharper에서 경고에 대한 설명은 상세하게 설명 다음과 같은 질문을 참조하십시오

Access to Modified Closure

일부를 실행하고자 할 때 난 당신이 WPF/실버/WP7 응용 프로그램에서 자주 그림 한 패턴을 사용 UI가 처음로드되거나 렌더링 될 때 코드가 한 번만 생성됩니다.

관련 문제