[英]How does FromEventPattern know when events are completed?
我有一個可觀察的集合,由大量事件填充。 我想從EventArg中獲取信息,按名稱對其進行分組,然后選擇每個名稱的最大日期。 我試過這個:
_subscription = Observable
.FromEventPattern<NewLoanEventHandler, NewLoanEventArgs>(
h => loan.NewLoanEvent += h,
h => loan.NewLoanEvent -= h)
.Select(a => a.EventArgs.Counterpatry)
.GroupBy(c => c.Name)
.SelectMany(grp => grp.Max( c => c.MaturityDate ).Select( maturity => new {grp.Key, maturity}) )
.Subscribe(
i => Console.WriteLine("{0} --> {1}", i.Key, i.maturity),
Console.WriteLine,
() => Console.WriteLine("completed")
);
我認為它可能會做我想要的,但訂閱永遠不會完成:我從來沒有得到完整的消息,我沒有得到任何輸出。 也就是說,我懷疑,因為Observable仍在等待更多事件。 我怎么告訴它停止等待並給我輸出?
如果您只是等待服務的單個響應,請考慮在查詢表達式中使用.Take(1)或.FirstAsync():
_subscription = Observable
.FromEventPattern<NewLoanEventHandler, NewLoanEventArgs>(
h => loan.NewLoanEvent += h,
h => loan.NewLoanEvent -= h)
.Take(1)
.Select(a => a.EventArgs.Counterpatry)
.GroupBy(c => c.Name)
.SelectMany(grp => grp.Max( c => c.MaturityDate ).Select( maturity => new {grp.Key, maturity}) )
.Subscribe(
i => Console.WriteLine("{0} --> {1}", i.Key, i.maturity),
Console.WriteLine,
() => Console.WriteLine("completed")
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.