Rx를 사용하여 Windows Phone 7.5에서 linq-to-sql 용 비동기 DataContext를 작성하려고합니다.Observable.FromAsyncPattern : BeginInvoke에 전달 된 매개 변수가 null이 됨
IObservable<List<Fact>> GetFacts(Func<MyDataContext, IQueryable<Fact>> selector)
{
var selectFacts = Observable.FromAsyncPattern<MyDataContext, IQueryable<Fact>>(selector.BeginInvoke, selector.EndInvoke);
return selectFacts(db).Select((query) => query.ToList());// db variable is MyDataContext instance, and is not null during the call or later
}
이 방법은 다음과 같이 클라이언트 코드에서 호출해야합니다 :
var q = GetFacts((database) => from item in database.Facts select item)
.ObserveOnDispatcher()
.Do((facts) => MessageBox.Show(facts.Count.ToString()))
.Subscribe();
내가 직면하고있어 문제는 매우 이상하다 내 생각은 DataContext에있는 방법을 정의하는 것입니다. 클라이언트 선택기 (from item in database.Facts select item
)가 실제로 호출되면 해당 컨텍스트의 database
매개 변수는 null입니다! 따라서 분명히 NullReferenceException이 발생합니다. 그러나 selectFacts
이 호출되면 db
값은 null이 아니며 올바른 인스턴스를 가리 킵니다.
이 사실에 대한 설명이 있습니까? 그것을 극복하는 방법?
미리 감사드립니다.
좋아, 결코 마음, 내가 제대로 할, 당신의 접근 방식이 작동 방법을 발견 . 아직도 내게 뭐가 잘못 됐는지 궁금해서 ... – Haspemulator