2013-01-02 3 views
2

System.Reactive에 새로 왔지만이 모든 것을 이해함에 따라 관찰 가능한 컬렉션을 구독 할 수 있으며 그곳에서 어떤 일이 발생하면 알림을받습니다.변경 사항에 System.Reactive

하지만 작업을 예약하는 데 도움이되는 프레임 워크를 찾고있을 때 이미 관찰 할 수있는 컬렉션을 가지고 데이터를 채우고 시간별로 필터링하여 onnext 이벤트를 발생 시키면 일부 기준이 일치합니다.

우리가 클래스를

Public Class Appointment 
    Property Notification As DateTime 
End Class 

을 가지고 우리가 List<IObservable>을 가지고 우리가 가입하고 우리는 같은 것을 지정 말할 수있는 where 아니라 새로운 무언가를 추가 할 때,하지만 뭔가가 일치 할 때. 이 경우, 현재 날짜 Now()하고 약속

src.WhenWhere(x => x.Notification < Now()) 

또는이는 사용자 정의 관찰하여 수행해야 하는가?

+0

이 ... VBA로 태그되어 맞나요? 정말로 중요하지 않습니다. –

+0

'List >'이 아닌'List '을 의미합니까? – casperOne

답변

2

다음과 같이 할 수 있습니다. 약속 시간에DateTime이되면 알림이 전송되었다고 말하고 where 절에 추가하라는 약속에 플래그를 지정해야합니다. 이제 결과를 계속해서 계속 보낼 것입니다.

void Main() { 
    var appointments = new List<Appointment> { 
     new Appointment { Id = 1, Notification = DateTime.Now.AddMilliseconds(4000) }, 
     new Appointment { Id = 2, Notification = DateTime.Now.AddMilliseconds(7000) } 
    }; 

    var q = from t in Observable.Generate(DateTime.Now, _ => true, _ => _, _ => DateTime.Now, _ => TimeSpan.FromSeconds(1)) 
     from a in appointments 
     where a.Notification < t 
     select new { a.Id, a.Notification }; 

q.Dump(); 

}

public class Appointment { 
    public int Id { get; set; } 
    public DateTime Notification { get; set; } 
} 
+0

흠, 아마도 이것이 내가 원하는 것을 수행하고 rx의 코딩 스타일이기도하다. 나는 그것을 선호되는 대답으로 표시한다. 그러나 여전히, 당장은 관측소 관측소를 만드는 것이 더 아름답다고 생각합니다. 귀하의 대답을 주셔서 감사합니다 – Luke

+1

그것은 매우 드물게 사용자 정의 관측이 정답입니다. 나는 그렇게하는 것이 나쁜 습관이라고 실제로 주장 할 것입니다. Rx를 더 잘 이해하면 운영자의 구성이 거의 모든 시나리오를 충족 할 수 있음을 알 수 있습니다. www.IntroToRx.com –

관련 문제