2012-11-09 6 views
0

backround 프로세스 및 MVP 패턴을 사용하여 응용 프로그램을 개발하고 있습니다. 나는이 같은 ModelProcess (모델)에 프로세스의 상태 (isCanceled, isStarted 또는 isPaused)를 저장할 수 있습니다 :모델 속성이 변경되면 이벤트를 발생시키는 방법

public event EventHandler CancelChanged; 
    bool isCanceled = false; 
    public bool IsCanceled 
    { 
     get { return isCanceled; } 
     set 
     { 
      isCanceled = value; 
      if (isCanceled) 
      { 
       if (CancelChanged != null) 
       { 
        CancelChanged(this, EventArgs.Empty); 
       } 
      } 
     } 
    } 
+0

(isCanceled)를 해제해야합니다. 그렇지 않으면 isCanceled가 true로 설정된 경우에만 통지됩니다. 상태를 앞뒤로 전환하는 경우가있을 수 있습니다. – Arthis

답변

1

귀하의 세터는 호출 CancelChangedisCanceledtrue로 설정되는 경우, 상관없이 그것은 false 된 경우 전에. 다음 코드는 값의 실제 변경이 있는지 확인하여 멱등수로 만듭니다.

set 
{ 
    if (value != isCanceled) 
    { 
     isCanceled = value; 
     if (CancelChanged != null) 
     { 
      CancelChanged(this, EventArgs.Empty); 
     } 
    } 
} 
+0

고마워요.하지만 제 경우에는 아무런 차이가 없습니다. MVP 패턴에 대해서만 물었습니다. 프로세스의 상태를 Model Layer에 저장할 수 있습니까? –

+0

당신이 할 수없는 이유를 생각할 수 없습니다. 모델 클래스에 원하는 것을 저장할 수 있습니다. –

+0

그 사건에 대해 CancelChanged라는 이름을 선택할 때 코드 가독성 문제가 발생할 것 같아요. true에서 false 로의 변경이 아니라 취소 된 속성의 변경 사항을 반영한다는 것을 알기 때문입니다. CancellationReversed와 같은 더 좋은 이름이 없습니까? 그냥 내 2c – fsimonazzi

관련 문제