<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Channel 9 - Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010/RSS"></atom:link>
	<image>
		<url>http://ecn.channel9.msdn.com/o9/previewImages/100/480361_100x75.jpg</url>
		<title>Channel 9 - Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<link></link>
	</image>
	<description>You 
recently learned about Erik Meijer&#39;s latest innovation, Rx, here on Channel 9. Clearly, judging by the views and comments on that post, it piqued your interest and curiosity.&amp;nbsp;Wes Dyer, a rock star developer on Erik&#39;s team of rock stars, implemented a great
 deal of Rx and helped to design it along with Erik. Visual Studio 2010 will ship with with two new types, IObserver and IObservable.&amp;nbsp;Rock star developer&amp;nbsp;Kim Hamiliton (you&#39;ve
 met her on C9) implemented these two types in the BCL and worked closely with Erik and Wes to insure that Rx in the BCL is designed and implemented to meet the strict requirements for new types in .NET&#39;s robust general purpose library. As you&#39;ve learned
 previously, IObservable is&amp;nbsp;the mathematical dual of IEnumerable. We of course talk about this here, but from the developer perspective. You&#39;ve already learned about the math and continuation monad behind this with Erik and Brian Beckman.Here, Kim and Wes dig into the implementation of IObservable and IObserver in the&amp;nbsp;2010 version of the BCL. How did Erik and team work with the BCL folks? What were the design decisions that led to the final implementation of the two Rx types in the BCL? What
 do these two new types enable for .NET developers? This is a great example of how innovation comes to market: incubation teams come up with a brilliant idea, refine it by working with multiple teams and some researchers in MSR, pass it along to a product group,
 they go back and forth on implementation details and design requirements and finally the new stuff is added to the shipping code base. Great stuff!!Make sure to watch this all the way through. You never know what kind of magic can happen if you know how to summon a wizard.Enjoy! </description>
	<link></link>
	<language>en</language>
	<pubDate>Sat, 25 May 2013 23:33:43 GMT</pubDate>
	<lastBuildDate>Sat, 25 May 2013 23:33:43 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>So I take it this is not in VS 2010 beta 1, but may be in beta 2? Downloading...</p>
<p>posted by vesuvius</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850065000000000</link>
		<pubDate>Tue, 04 Aug 2009 18:15:00 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850065000000000</guid>
		<dc:creator>vesuvius</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>It will be in VS 2010 <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> Not sure of the exact ship stage (Beta 2, etc). It will certainly be in RTM...</p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850069580000000</link>
		<pubDate>Tue, 04 Aug 2009 18:22:38 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850069580000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>A.W.E.S.O.M.E. <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> I don't suppose there's any rough estimate of Beta 2's arrival Charles? Is breath holding advised?</p>
<p>posted by tomkirbygreen</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850073710000000</link>
		<pubDate>Tue, 04 Aug 2009 18:29:31 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850073710000000</guid>
		<dc:creator>tomkirbygreen</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>I'm excited too. This is awesome stuff and very deep in implications for distributed reactive programming on the .NET stack. To be clear, I do not know the exact ship vehicle (meaning, I do not know if beta 2 is the target). All I know is that these two
 new types <em>will</em> ship as part of VS 2010. The VS People own the timing plan. Me, I'm just a lawnmower. You can tell me by the way I walk.</p>
<p>&nbsp;</p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850080220000000</link>
		<pubDate>Tue, 04 Aug 2009 18:40:22 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850080220000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p><a href="http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html">http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html</a></p>
<p><a href="http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html"></a></p>
<p>&nbsp;</p>
<p><a href="http://evain.net/blog/articles/2009/07/30/rebasing-system-reactive-to-the-net-clr">http://evain.net/blog/articles/2009/07/30/rebasing-system-reactive-to-the-net-clr</a></p>
<p>posted by RobertL</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850091600000000</link>
		<pubDate>Tue, 04 Aug 2009 18:59:20 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850091600000000</guid>
		<dc:creator>RobertL</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>We are actually thinking about this <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> </p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850096910000000</link>
		<pubDate>Tue, 04 Aug 2009 19:08:11 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850096910000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>In your first C# sample...<br /><br /><pre class="brush: csharp">
var o = Observable.Return(1); 
o.Subscribe( x =&gt; Console.WriteLine(&quot;OnNext({0})&quot;, x), ex =&gt; Console.WriteLine(&quot;Error()&quot;), () =&gt; Console.WriteLine(&quot;Completed()&quot;) );
</pre><br /><br />I see you are creating an IObservable object, and you are subscribing to it, but what is telling the observable object to begin calling the OnNext method on its subscribers?</p>
<p>posted by gdesroches</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850114740000000</link>
		<pubDate>Tue, 04 Aug 2009 19:37:54 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850114740000000</guid>
		<dc:creator>gdesroches</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>When you say 2010 BCL, you mean .NET 4 right?</p>
<p>posted by Bass</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850133320000000</link>
		<pubDate>Tue, 04 Aug 2009 20:08:52 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850133320000000</guid>
		<dc:creator>Bass</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Yes. .NET 4 is the product marketing terminology. Sorry for the confusion.</p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850147790000000</link>
		<pubDate>Tue, 04 Aug 2009 20:32:59 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850147790000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>I guess the implementation of the Observable.Subscribe method that is coming out of Observable.Return just calls OnNext.</p>
<p>So in fact by subscribing you're calling yourself back with the value 1.&nbsp;</p>
<p>&nbsp;</p>
<p><pre class="brush: text">Observable.Return&lt;T&gt;(T value) = new IObservable { Subscribe(observer) = observer.OnNext(value) }</pre></p>
<p>posted by epentangelo</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850170620000000</link>
		<pubDate>Tue, 04 Aug 2009 21:11:02 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850170620000000</guid>
		<dc:creator>epentangelo</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Very cool. </p>
<p>&nbsp;</p>
<p>Wes really is a rockstar developer.</p>
<p>Wes, please resume blogging, we miss you.</p>
<p>posted by Judah</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850202130000000</link>
		<pubDate>Tue, 04 Aug 2009 22:03:33 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850202130000000</guid>
		<dc:creator>Judah</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Nice. And what a funny surprise with Beckman, trained in the art {M[onad],F[unction],C[omposition]}-fu to join in <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' />&nbsp;Now to wait for the arrival of the next beta.</p>
<p>&nbsp;</p>
<p>I'm curious how GUI programming will evolve with the arrival of Rx.</p>
<p>posted by exoteric</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850202990000000</link>
		<pubDate>Tue, 04 Aug 2009 22:04:59 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850202990000000</guid>
		<dc:creator>exoteric</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Well the Obserable.Return function doesnt just return any old IObserable.&nbsp; The one it returns calls OnNext the moment after someone subscribes (as it doesnt need to wait, it already knows what it should return).</p>
<p>posted by cdwatkins</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850410010000000</link>
		<pubDate>Wed, 05 Aug 2009 03:50:01 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850410010000000</guid>
		<dc:creator>cdwatkins</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Interesting stuff, yet another reason to look forward to the RTM release!<br /><br />Out of curiosity, like you mentioned developers tend to use IEnumerable over arrays, do you think developers will have the tendancy to use this over events in C# .NET? Will any of the controls we use today be extended with IObservable implementations?
</p>
<p>posted by kgooding</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850410640000000</link>
		<pubDate>Wed, 05 Aug 2009 03:51:04 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850410640000000</guid>
		<dc:creator>kgooding</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Yes. And yes again.</p>
<p>&nbsp;</p>
<p>C</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>PS: Stay tuned to the BCL team blog (or Soma's blog or the VS blog) to find out when IObserver and IObservable will be available for your programming enjoyment. I can't wait!!</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850414220000000</link>
		<pubDate>Wed, 05 Aug 2009 03:57:02 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850414220000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Interesting talk! But why you guys call it OnError() ? I think OnException() would be more appropriate as there's quite a different meaning to both words.</p>
<p>posted by robertboeckel</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850484250000000</link>
		<pubDate>Wed, 05 Aug 2009 05:53:45 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850484250000000</guid>
		<dc:creator>robertboeckel</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>I was thinking about the new IObservable interface.&nbsp; At first I thought great, brilliant, amazing, revolutionary.&nbsp; But then I thought about how you could take an IEnumerable and make it an IObservable, and the reverse.&nbsp; For instance you can just block the
 MoveNext until the next event comes in, or you can just call getnext and then IObservable.OnNext(Current) to switch it the other way.&nbsp; So in the end what makes IObservable any better or different?&nbsp; Well the IEnumerable has a slight assumption that when you
 do a GetNext/Current it will be fairly fast(as it is synchronous), the IObservable makes no such assumption.&nbsp; If you want to continue computation while you wait for the GetNext to finish you better do that on a different thread, so there is thread overhead.&nbsp;
 In the end I would say that IObservable is STRICTLY better than IEnumerable.&nbsp; Anything IEnumerable can do IObservable can do.&nbsp; For instance: foreach(type a in IEnumerable){ write(a)} is the same as bool end=true;IObservable.Subscribe(a=&gt;write(a),a=&gt;throw a,()=&gt;end=false;);while(end){};&nbsp;
 I bet you could even have the same syntactic suger of the foreach work for IObservable.&nbsp; The only difference is going the other way where the MoveNext blocks would need to be done on a separate thread so IEnumerable is never better (and sometimes worse) then
 IObserable.</p>
<p>&nbsp;</p>
<p>In the end why don’t you just convert ALL IEnumerable’s over to the IObservable pattern (as well as all events)? (I know that you have backwords compatibility issues with this, but other then that)</p>
<p>posted by cdwatkins</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850521930000000</link>
		<pubDate>Wed, 05 Aug 2009 06:56:33 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850521930000000</guid>
		<dc:creator>cdwatkins</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>cool stuff <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> (shorter than usual though) The brian cameo in the end was epic <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-5.gif' alt='Wink' />
</p>
<p>&nbsp;</p>
<p>events since .net2 has been reffered to in the docs as &quot;first class citizens&quot; but they cant be used like the&nbsp; IEvent&lt;T&gt; mentioned in the video. do you consider the events that exsist in .net today first class still? using Rx with exsisting event is a bit
 of a hassle precisly because you cant pass them around, is that something you might change in .net4?</p>
<p>&nbsp;</p>
<p>the relation between tasks and iobservable is kinda interseting because they sort of overlap.. to bad will tasks wont&nbsp;implement IObservable&nbsp; <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-6.gif' alt='Sad' /> seems&nbsp;like a good fit imo.. there are some problems i guess, does it call OnNext when the progress changed or
 when its done for example. extension methods might be a good way to go but they relly beg to be integrated well <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> an interview with wes and joe duffy would be really interesting <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> waiting for dev11 seems a bit harsh though :/
</p>
<p>&nbsp;</p>
<p>also, why is AnonomusObserver internal?&nbsp;are the Subscribe overloads/Select the replacement for having it public? it seems like it would be a very useful thing to have when writing integration with Task or my own stuff...</p>
<p>and why is Combine internal? i think there is a BinaryObservable in there somewhere thats also internal.. please dont repeat what you did with TreeVisitorBase (i think its called), the base class for tree visitors used in linq (that is finaly public in .net4,
 yay <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> ). Having to rewrite that stuff in every project is such a pain.. im not saying thats what you've done but please, please dont make stuff internal lightly <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>&nbsp;</p>
<p>Kim mentioned that only the interfaces are in the bcl, not the extension methods? is this really correct or did i misunderstand? Rx is great but what makes is super powerful are those extension methods :O surely the entire System.Reactive.dll will be in
 .net4?</p>
<p>posted by aL_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850712830000000</link>
		<pubDate>Wed, 05 Aug 2009 12:14:43 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850712830000000</guid>
		<dc:creator>aL_</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>well stricktly speaking you are right <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> all IEnumerables can be expressed as IObservables and vice versa. i think thats part of the mathematical dual thing. (atleast i think so, i dont have any formal proof on hand <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> )</p>
<p>&nbsp;</p>
<p>IObservable really shines when you have a bunch of things you want to coordinate. consider a keyboard shortcut. to implement that you'd typically have a keyDown event handler and then store the keys that are currently down and look into a list of your keyboard
 shortcuts. this however means shared state (= generally speaking, bad&nbsp;) with Rx however&nbsp;you can write a linq statement that manages this.</p>
<p>&nbsp;</p>
<p>also, with Rx you get a new &quot;listener&quot; for your keyboard shortcut, something you dont get with just events. with events you have to manage the dispatch of when your shortcut is pressed, with Rx you get an object that you can subscribe to <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>check out these blog posts for more info (also where i snagged this example)</p>
<p>&nbsp;</p>
<p><a href="http://themechanicalbride.blogspot.com/2009/07/developing-with-rx-part-1-extension.html">http://themechanicalbride.blogspot.com/2009/07/developing-with-rx-part-1-extension.html</a></p>
<p><a href="http://themechanicalbride.blogspot.com/2009/07/developing-with-rx-part-2-converting.html">http://themechanicalbride.blogspot.com/2009/07/developing-with-rx-part-2-converting.html</a></p>
<p>&nbsp;</p>
<p>i dont think Ienumerable is dead though, its more a question of what makes most sense in each case, sometimes we're pulling data and sometimes we're getting it thrown at us, sometimes we want to block while waiting on data/computations and sometimes we dont
 <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /></p>
<p>posted by aL_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850725650000000</link>
		<pubDate>Wed, 05 Aug 2009 12:36:05 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850725650000000</guid>
		<dc:creator>aL_</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>you can actually start playing with Rx <strong>right now</strong> <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> check out this blog for details:</p>
<p><a href="http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html">http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html</a></p>
<p>also contains lots of good info on why Rx is useful in general</p>
<p>posted by aL_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850727050000000</link>
		<pubDate>Wed, 05 Aug 2009 12:38:25 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850727050000000</guid>
		<dc:creator>aL_</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Yep. Thanks for the link. The new types discussed in this interview&nbsp;aren't in the .NET 4 BCL yet, however...</p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850831290000000</link>
		<pubDate>Wed, 05 Aug 2009 15:32:09 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850831290000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>&quot;sometimes we want to block while waiting on data/computations and sometimes we dont&quot;</p>
<p>&nbsp;</p>
<p>well IEnumerable is basicly the creator of the object expressing you should (or must if you dont split off a diffrent thread), block while you wait for the result.&nbsp; IObservable says you &quot;may&quot; block or not block as you wish.&nbsp; The nice thing about IEnumerable
 is it expresses that the author doesnt expect it to take too long to get the next value, although even this kind&nbsp;of assumption&nbsp;can be broken slightly.&nbsp; Look at Linq to Entities or Linq to SQL, both of these take a long time to get all thier values the first
 time.&nbsp; Why should the program have to block while it waits for these to finish?&nbsp; I think IEnumerable will still probably exist for some &quot;in-memory&quot; very quick things, that blocking doesnt really matter on, but I wish there was a better way for authors to express
 that they dont expect it to take long to get the values then use a totaly diffrent type.</p>
<p>&nbsp;</p>
<p>Basicly IEnumerable is sync with a method call to get the result, and IObserable is async with a callback to get the result.</p>
<p>posted by cdwatkins</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850879860000000</link>
		<pubDate>Wed, 05 Aug 2009 16:53:06 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850879860000000</guid>
		<dc:creator>cdwatkins</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>&quot;IObservable says you &quot;may&quot; block or not block as you wish&quot;</p>
<p>&nbsp;</p>
<p>well yeah but if you want to block waiting for an observable, thats something you have to sort out your self. there isnt really anything to block on since you dont call the IObserver to get the values, it calls you.</p>
<p>&nbsp;</p>
<p>what you say about IEnumberable taking a long time to get the values is true in some cases but in some sort of general way its not because IEnumerable is
<em>lazy</em>. IObservable is sort of the opposite, its <em>hyperactive</em> <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-4.gif' alt='Tongue Out' /> it keeps throwing values at you at its own pace. this could potentially mean that&nbsp;some work is done in vain, your program might throw away the data because its not ready to handle
 it or the data have become outdated. the lazyness of IEnumerable limits that behavior</p>
<p>&nbsp;</p>
<p>&quot;why should the program wait&quot;</p>
<p>&nbsp;</p>
<p>i dont think its all that diffrent comparing IEnumerables and IObserables that way though.. neither are have any threading baked in. Even if IObservables are used the program have to wait for the database at some point <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' />&nbsp;</p>
<p>&nbsp;</p>
<p>i still think it comes down to preference and convenience in the end <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> you can really use either one, in some cases is really hard to use one or the other and in most cases the devide isnt as&nbsp;large.
</p>
<p>&nbsp;</p>
<p>IEnumerables long lost twin has finally made it into .net, making it twice as powerful &nbsp;<img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /> (sans the extension methods it seems :/)</p>
<p>posted by aL_</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850932470000000</link>
		<pubDate>Wed, 05 Aug 2009 18:20:47 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633850932470000000</guid>
		<dc:creator>aL_</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>If you're interested in a nice challenge with Rx, go over to my blog and try solving the tripple-click puzzle:&nbsp;</p>
<p><font face="Calibri,Times New Roman" size="3"><font face="Calibri,Times New Roman" size="3"><span lang="EN"></p>
<p dir="ltr" align="left">&nbsp;</p>
</span><a href="http://blogs.msdn.com/jeffva/archive/2009/08/11/fun-system-reactive-puzzle.aspx"><font face="Calibri,Times New Roman" size="3"><font face="Calibri,Times New Roman" size="3"><span lang="EN">http://blogs.msdn.com/jeffva/archive/2009/08/11/fun-system-reactive-puzzle.aspx</span></font></font></a></font></font>
<p></p>
<p>posted by JeffVa_MS</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633856336770000000</link>
		<pubDate>Wed, 12 Aug 2009 00:27:57 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633856336770000000</guid>
		<dc:creator>JeffVa_MS</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>This reply is a bit late perhaps, but I don't quite understand this.</p>
<p>&nbsp;</p>
<p>Does Return really call OnNext <strong>after</strong> someone subscribes, or calls it OnNext
<strong>during</strong> the call to Subscribe? If I call Subscribe, I get back an IDisposable, but do I get the change to call Dispose before the Observable starts pushing values?</p>
<p>&nbsp;</p>
<p>In other words, what if I want this method:</p>
<p><pre class="brush: csharp">IObservable&lt;T&gt; ToObservable&lt;T&gt;(this IEnumerable&lt;T&gt; xs) { return new IObservable&lt;T&gt;() { IDisposable Subscribe(IObserver&lt;T&gt; obs) { foreach (var x in xs) obs.OnNext(x); obs.OnDone(); return someDisposable(); // Don't know how to implement
 } } }</pre></p>
<p>&nbsp;</p>
<p>Can I unsubscribe from the IObservable before or during the series of OnNext calls?</p>
<p>If not, how would this be implemented in a way that does allow for me to unsubscribe, should I explicitly spawn a new thread?</p>
<p>posted by Tom Lokhorst</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633918115520000000</link>
		<pubDate>Thu, 22 Oct 2009 12:32:32 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633918115520000000</guid>
		<dc:creator>Tom Lokhorst</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Yes, you can unsubscribe. You don't need to use another thread, but given the ToObservable() method you do.</p>
<p><pre class="brush: csharp">public static IObservable&lt;T&gt; ToObservable&lt;T&gt;(this IEnumerable&lt;T&gt; xs) {
 return new Observable&lt;T&gt; () { Enumerable = xs };
}</pre></p>
<p>Here's the internal class needed to handle subscription:</p>
<p><pre class="brush: csharp">internal sealed class Observable&lt;T&gt; : IObservable&lt;T&gt; {

private readonly UnSubscribe _unsubscribe = new UnSubscribe (); 
public IEnumerable&lt;T&gt; Enumerable { get; set; } 
public IObserver&lt;T&gt; Observer { get; set; } 
public IDisposable Subscribe(IObserver&lt;T&gt; o) { 
Observer = o; 
ThreadPool.QueueUserWorkItem(Worker); 
return _unsubscribe; 
} 
private void Worker (object state) { 
foreach (T item in Enumerable) {
 if (_unsubscribe.Cancel)
 return; 
Observer.OnNext (item); 
}
 Observer.OnCompleted ();
 }
}</pre></p>
<p>And here's the IDisposable internal class that flags when the subscriber is no longer interested:</p>
<p><pre class="brush: csharp">internal sealed class UnSubscribe : IDisposable {
 public bool Cancel { get; set; }
 public void Dispose() {
 Cancel = true;
 } 
}</pre></p>
<p>posted by gt</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633919067020000000</link>
		<pubDate>Fri, 23 Oct 2009 14:58:22 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633919067020000000</guid>
		<dc:creator>gt</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>I guess I'm not as familiar with the .NET BCL as I thought, I didn't know about the ThreadPool class.</p>
<p>But from what I've read, it might still schedule the work on another thread (or the current thread if it becomes idle first). So I guess I'm implicitly using another thread instead of explicitly creating my own.</p>
<p>&nbsp;</p>
<p>Since the Observer.Return method doesn't use the ThreadPool class (at least not in the Silverlight binary), I guess that means that, that one isn't &quot;unsubscripable&quot;.</p>
<p>&nbsp;</p>
<p>posted by Tom Lokhorst</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633920130690000000</link>
		<pubDate>Sat, 24 Oct 2009 20:31:09 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633920130690000000</guid>
		<dc:creator>Tom Lokhorst</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[
<p>Because I already wrote&nbsp;<a href="http://blogs.us.sogeti.com/ericswanson/2009/12/22/iobservable-reactive-and-composite-framework-event-management/">my own implementation of IObservable</a>&nbsp;with what appears to be a very different solution, I'd be curious
 to know what I can do to merge it with the Reactive Framework. My solution was developed because I was frustrated with managing weak event references as well as the implementation of events in WPF and now Silverlight using INotifyPropertyChanged versus DependencyProperty.
 Let me know...</p>
<p>posted by ericis</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633971105820000000</link>
		<pubDate>Tue, 22 Dec 2009 20:29:42 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c633971105820000000</guid>
		<dc:creator>ericis</dc:creator>
	</item>
	<item>
		<title>Re: Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)</title>
		<description>
			<![CDATA[ <p>I like Rx very much but before I invest 41 minutes of my time let me please ask this:<br>Is this video still up to date? Rx has undergone some changes since the production.</p><p>posted by RainerHilmer</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c634333172600000000</link>
		<pubDate>Mon, 14 Feb 2011 21:54:20 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010#c634333172600000000</guid>
		<dc:creator>RainerHilmer</dc:creator>
	</item>
</channel>
</rss>