每個項目假設我有這樣的代碼:的Rx - 消費新線程
static void Main(string[] args)
{
var scheduler = NewThreadScheduler.Default;
var enumerable = Enumerable.Range(0, 100);
enumerable
.ToObservable(scheduler)
.SubscribeOn(scheduler)
.Subscribe(item =>
{
Console.WriteLine("Consuming {0} on Thread: {1}", item, Thread.CurrentThread.ManagedThreadId);
// simulate long running operation
Thread.Sleep(1000);
});
Console.ReadKey();
}
正如你我轉換了IEnumerable到的IObservable。然後我想消耗新線程中的每個項目,所以我使用SubsribeOn(調度程序)。不幸的是,每個迭代在同一個線程上工作,因此一個迭代會在下一個塊中運行
結果是:
Consuming 0 on Thread: 4
Consuming 1 on Thread: 4
Consuming 2 on Thread: 4
Consuming 3 on Thread: 4
Consuming 4 on Thread: 4
....
是有可能迫使這種行爲?
不應該是'ObserveOn'而不是'SubscribeOn'嗎? – Dirk
我已經嘗試過ObserveOn,SubscribeOn和兩個在同一時間沒有成功。 – Lukas
我不想在新線程上產生,但我想要的是消耗新線程上的每個項目。 – Lukas