0
我正嘗試在Windows Phone 7.5上使用Rx爲linq-to-sql編寫異步DataContext。我的想法是定義在DataContext的一個方法:Observable.FromAsyncPattern:傳遞給BeginInvoke的參數被取消爲零
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();
我面臨的問題是很奇怪的。當實際調用客戶端選擇器(from item in database.Facts select item
)時,其上下文中的database
參數爲空!因此,我顯然得到了NullReferenceException。但是,調用selectFacts
時,db
值非空,並指向正確的實例。
有沒有解釋這個事實?如何克服它?
在此先感謝。
好吧,沒關係,我發現瞭如何正確地做到這一點,你的方法工作。仍然想知道我的錯在哪裏... – Haspemulator