Я играю с Rx в .Net3.5SP1 и пробую 101 Rx Samples . Я пытаюсь первый пример (Пуск - Выполнить код асинхронно), но, похоже, на самом деле не работает асинхронно. Например,
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]
Есть ли объяснение этому? Я делаю что-то неправильно? Это ожидаемое поведение?
UPDATE
Я бы подумал, что сказал бы
[Creating]
[Created]
[Starting]
Calculating...
[Started]
<...3 Second Wait...>
Done.
Но основной поток блокируется во время предположительно асинхронного вызова.