2014-07-10 3 views
0

내가 일반적으로 같은 등, GUI 업데이트와 같은 작업을 반복 설정 :반복 작업에 대해 선호되는 접근 방식은 무엇입니까?

MonitorTimer = new System.Threading.Timer(new TimerCallback(Monitor), null, 1000, 2000); 

내가 최근에 지금 반복 작업을 만드는 선호하는 방법은 무엇

  Task.Factory.StartNew(() => 
      { 
       MyApp(); 
      }); 

으로 지금 작업을 시작하기 시작했다 ? StartNew에서이 작업을 수행 할 수있는 확실한 옵션이 없습니다.

+0

반복 작업은 무엇입니까? 언제 완료 되야합니까? –

답변

0

System.Threading.Timer를 계속 사용하십시오. 또는 Wait을 사용하여 전용 스레드에서 이벤트를 기다릴 수도 있지만 그럴만한 이유는 거의 없습니다.

1

Microsoft의 Reactive Framework를 사용하는 것을 선호합니다. 그런 다음이 작업을 수행 할 수 있습니다.

var subscription = 
    Observable 
     .Interval(TimeSpan.FromSeconds(1.0)) 
     .ObserveOn(this) /* this is the current form */ 
     .Subscribe(() => 
     { 
      MyApp(); 
     }); 

이 메서드는 메서드의 모든 UI 스레드 정렬, 타이밍 및 호출을 처리합니다.

쉽게 같이 그것을 취소 할 수 있습니다

subscription.Dispose(); 
+0

내 Timer 방식보다 이점이 있습니까? – ManInMoon

+0

@ManInMoon - 예, UI 스레드가 하나의 마샬링이지만 Reactive Framework와 함께 제공되는 모든 linq 및 기타 연산자. – Enigmativity

관련 문제