.Net3.5SP1のRxで遊んでいて、101Rxサンプルを試しています。最初のサンプル([開始]-[コードを非同期で実行])を試していますが、実際には非同期で実行されていないようです。例えば、
Console.WriteLine("[Creating]");
var o = Observable.Start(() =>
{
Console.WriteLine("Calculating...");
Thread.Sleep(3000);
Console.WriteLine("Done.");
});
Console.WriteLine("[Created]");
Console.WriteLine("[Starting]");
o.First(); // subscribe and wait for completion of background operation
Console.WriteLine("[Started]");
出力
[Creating]
[Created]
[Starting]
Calculating...
<...3 Second Wait...>
Done.
[Started]
これについての説明はありますか?私は何か間違ったことをしていますか?これは予想される動作ですか?
アップデート
私はそれが言っただろうと思ったでしょう
[Creating]
[Created]
[Starting]
Calculating...
[Started]
<...3 Second Wait...>
Done.
しかし、おそらく非同期呼び出しが発生している間、メインスレッドはブロックされます。