我試圖在Andorid Xamarin中使用RX。
你知道如何使用:
Observable.SubscribeOn(..)
使用線程默認池做後臺任務申報 Observable.ObserveOn(..)
從可觀察的事件重定向到UI線程Xamarin中的SubscribeOn/ObserveOn示例Android
根據SubscribeOn
我嘗試了所有ISchedulers 從
System.Reactive.PlatformServices.dll/System.Reactive.Concurrency
即:
NewThreadScheduler.Default
TaskPoolScheduler.Default
ThreadPoolScheduler.Instance
並沒有什麼效果。
在ohter手[如果可能的話]我不想手動:
- 裏面創建我的線程可觀測
- 在觀測使用RunOnUiThread
= = = =更新= =
爲NewThreadScheduler.Default
代碼測試結果:
Console.WriteLine("creating ole");
var ole = Observable.Create<string>(suber =>
{
Console.WriteLine("inside ole");
Thread.Sleep(5000);
suber.OnNext("point1");
suber.OnCompleted();
Console.WriteLine("ole completed");
return Disposable.Create(() => Console.WriteLine("observer unsubscribed"));
});
ole.SubscribeOn(NewThreadScheduler.Default);
Console.WriteLine("subscribing");
oleSub = ole.Subscribe(s => Console.WriteLine("result: " + s));
Console.WriteLine("subscribed");
輸出:
creating ole
subscribing
inside ole
result: point1
ole completed
observer unsubscribed
subscribed
結論:
可觀察到的內容在主線程中執行,但預計運行其自己的線程:ole.SubscribeOn(NewThreadScheduler.Default);
「並沒有什麼作品」 但你是什麼真正看到?我在Xamarin中經常使用這些方法而沒有問題。 'myObservable.SubscribeOn(NewThreadScheduler.Default)...' – flakes