亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 Action<T> 創建 Observable?

如何從 Action<T> 創建 Observable?

PHP
蠱毒傳說 2024-01-20 15:58:00
我試圖從一個 Action 創建一個 Observable,但是 andFromEventPattern語法FromEvent讓我很難理解。這是我的嘗試:Observable    .FromEventPattern<Action<IStreamTrade>, IStreamTrade>(        x => _polygonSocket.TradeReceived += x,        x => _polygonSocket.TradeReceived -= x)    .Select(x => x?.EventArgs)    .IsNotNull()    .Subscribe( /** do stuff **/)    .DisposeWith(Bindings);我覺得FromEventPattern這里可能不是正確的選擇,但我無法編譯其他任何內容。會發生什么:我收到一個Parameter count mismatch.異常,如下所示:Parameter count mismatch.Thread started:  #26  at System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, System.Boolean throwOnBindFailure, System.Boolean allowClosed) [0x000ee] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/corlib/System/Delegate.cs:230   at System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/mcs/class/corlib/System/Delegate.cs:296   at System.Reactive.ReflectionUtils.CreateDelegate[TDelegate] (System.Object o, System.Reflection.MethodInfo method) [0x00000] in <370f6a6bb34048878534065376a195cb>:0   at System.Reactive.Linq.ObservableImpl.FromEventPattern+Impl`2[TDelegate,TEventArgs].GetHandler (System.Action`1[T] onNext) [0x0003d] in <370f6a6bb34048878534065376a195cb>:0   at System.Reactive.Linq.ObservableImpl.EventProducer`2+Session[TDelegate,TArgs].Initialize () [0x00023] in <370f6a6bb34048878534065376a195cb>:0   at System.Reactive.Linq.ObservableImpl.EventProducer`2+Session[TDelegate,TArgs].Connect (System.IObserver`1[T] observer) [0x00033] in <370f6a6bb34048878534065376a195cb>:0 我正在尋找什么:我想學習如何從Action<IStreamTrade>. 我對使用的解決方案持開放態度Observable.Create,但更喜歡使用FromEvent或的解決方案FromEventPattern(如果可能的話)。GitHub 源代碼
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

嘗試使用Observable.FromEvent,它將通用的基于 Action 的 .NET 事件轉換為可觀察的序列:


Observable.FromEvent<IStreamTrade>(

    x => _polygonSocket.TradeReceived += x,

    x => _polygonSocket.TradeReceived -= x)

.Subscribe( /** do stuff **/)

.DisposeWith(Bindings);


查看完整回答
反對 回復 2024-01-20
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

雖然我更喜歡,并使用了維塔利的方法。這是使用的另一種方法Observable.Create。


Observable

    .Create<IStreamTrade>(

    x =>

    {

        Action<IStreamTrade> aist = st => x.OnNext(st);

        _polygonSocket.TradeReceived += aist;

        return Disposable.Create(() => _polygonSocket.TradeReceived -= aist);

    })

    .Subscribe()

    .DisposeWith(Bindings);


查看完整回答
反對 回復 2024-01-20
  • 2 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號