私は新しいスレッドでオブザーバブルをスケジュールし、その結果を現在のスレッドに戻そうとしています。現在のスレッドに戻る
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Log("init");
Observable.Return(0)
.ObserveOn(NewThreadScheduler.Default)
.Do(_ => Log("Do1 method"))
.ObserveOn(CurrentThreadScheduler.Instance)
.Do(_ => Log("Do2 method"))
.Subscribe(_ => Log("subscribe method"));
Console.ReadKey();
}
static void Log(string label)
{
Console.WriteLine("{0} on {1}", label, Thread.CurrentThread.ManagedThreadId);
}
}
}
これは私が取得していた結果である:
init on 9
Do1 method on 10
Do2 method on 10
subscribe method on 10
はなぜDo2にする方法と購読方法は、代わりに#9のスレッド#10にあるのでしょうか?私はこの結果を期待していた。
init on 9
Do1 method on 10
Do2 method on 9
subscribe method on 9
おかげで使用してイベントループとして機能する第三のスレッドを実行することができロット!私のアプリは正常に動作していましたが、私はコンソールプロジェクトでそれを再現しませんでした。 – goodfriend0