<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.wintellect.com/CS/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Jeffrey Richter's Blog</title><subtitle type="html" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.wintellect.com/CS/blogs/jeffreyr/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61129.2">Community Server</generator><updated>2006-10-18T00:31:17Z</updated><entry><title>New version of Power Threading Library dated October 30, 2008</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/11/05/new-version-of-power-threading-library-dated-october-30-2008.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/11/05/new-version-of-power-threading-library-dated-october-30-2008.aspx</id><published>2008-11-06T01:31:00Z</published><updated>2008-11-06T01:31:00Z</updated><content type="html">The latest version of Jeffrey Richter’s free Power Threading Library, which includes a DLL for use by Silverlight applications and components is now available for download. The Silverlight version includes Jeffrey’s popular AsyncEnumerator class that allows developers to use a synchronous programming model while performing asynchronous operations. This allows developers to create very fast and responsive applications while using very few threads. To learn more click &lt;A href="http://www.wintellect.com/PressReleaseView.aspx?PressRelease=85"&gt;here&lt;/A&gt;. To download the library click &lt;A href="http://www.wintellect.com/PowerThreading.aspx"&gt;here&lt;/A&gt;. &lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=7256" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>Django Bates concert recorded and available on the BBC this week.</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/10/27/django-bates-concert-recorded-and-available-on-the-bbc-this-week.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/10/27/django-bates-concert-recorded-and-available-on-the-bbc-this-week.aspx</id><published>2008-10-27T15:27:00Z</published><updated>2008-10-27T15:27:00Z</updated><content type="html">Well, I'm back from my concert tour in England. I had just a spectacular time and made some good friends. The last show, in Birmingham, was recored by the BBC and is available for listening on the BBC's website this week. If you like to hear a concert (where I helped set up the instruments &amp;amp; equipment), then go here: &lt;A href="http://www.bbc.co.uk/radio3/"&gt;http://www.bbc.co.uk/radio3/&lt;/A&gt;&amp;nbsp;and scroll down until you find Django Bates. Django's version of "In the Mood" is particulaly awesome and is not available on any of his albums. I hope you enjoy!&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=7203" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>On tour with Django Bates' 19-piece Jazz band in England, October 15-17, 2008</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/10/02/on-tour-with-django-bates-19-piece-jazz-band-in-england-october-15-17-2008.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/10/02/on-tour-with-django-bates-19-piece-jazz-band-in-england-october-15-17-2008.aspx</id><published>2008-10-02T23:24:00Z</published><updated>2008-10-02T23:24:00Z</updated><content type="html">&lt;P&gt;I don't normally blog about personal things but I'm just so excited about this one that I had to. I am pretty passionate about the music I like and I like a lot of jazz- fusion/rock stuff. In the 1980's I was into Bill Bruford's Earthworks jazz group (some of you might know Bruford from 1970s Yes and King Crimson). At this time, Earthworks had a keyboardist/horn player named Django Bates with him. I really liked Django's style and over the past 20 years or so, he has put out a number of jazz CDs. I have purchased all of them and I love them all. In June 2008, Django put out his most-recent album, &lt;SPAN id=btAsinTitle&gt;Spring Is Here (Shall We Dance?), and I just love it! It has 19 musicians on it all playing very complex music with a bit of that dry British humor that I love so much.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I checked Django's web site (&lt;A href="http://djangobates.co.uk/"&gt;http://DjangoBates.co.uk&lt;/A&gt;) and discovered that he and his band are playing some dates in England; they would never fly to the United States because the expenses of flying 19 musicians over would be too cost prohibitive and Django's music&amp;nbsp;doesn't appeal to the mass public so it's unlikely that he would recover the costs. So, I decided that I would fly out to London to see the show. But then, I had an idea...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I contacted Django (via MySpace) and his manager and told them what I was planning to do and explained to them that instead of flying out there, I'd give them the money to video tape the concert and send me a video; then they could sell the video to other fans if they wanted to. It seemed like a win-win situation to me as now I could stay home and not miss days of work and I'd also have a video of the show which I could watch repeatedly.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Well, one thing led to another during the e-mail exchanges and Django's manager invited me to go on tour with the band! So now, I'm flying to England and I'm attending all 3 shows on October 15, 16, and 17. I'm helping the band set up for each show and I'm riding with them on their tour bus as we go from London to Manchester to Birmingham! This is a great opportunity for me and, as I've said, I'm so excited that I just wanted to share it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If anyone reading this also happens to be going to any of these concerts (see Django's web site for dates/locations), drop me a line and we can meet up at the show.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Or, if you get a chance, check out some of Django's music - I love it!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=7079" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>AsyncEnumerator and SynchronizationContext</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/08/21/asyncenumerator-and-synchronizationcontext.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/08/21/asyncenumerator-and-synchronizationcontext.aspx</id><published>2008-08-21T12:01:00Z</published><updated>2008-08-21T12:01:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT face="Times New Roman" size=3&gt;I am presenting at Wintellect’s &lt;/FONT&gt;&lt;A href="http://www.devscovery.com/"&gt;&lt;FONT face="Times New Roman" size=3&gt;Devscovery conference&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt; this week. At this conference, the attendees are able to set up 1-on-1 sessions with any of the speakers. One attendees wanted to ask me some questions about my Power Threading’s AsyncEnumerator class. They were using this class in a Windows Form project of theirs and I thought it would be best if I discussed what is going on in this forum.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT face="Times New Roman" size=3&gt;In .NET 2.0, the CLR team added a &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx"&gt;&lt;FONT face="Times New Roman" color=#0000ff size=3&gt;System.Threading.SynchronizationContext class&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;. This class provides a way for an application model (like Windows Forms, WPF, or ASP.NET) to describe its threading model (such as how to marshal work to a Windows Forms/WPF GUI thread). My AsyncEnumerator class takes advantage of this automatically so that iterator code executes on the GUI thread for Windows Forms and WPF apps. For ASP.NET, this allows my AsyncEnumerator to associate the client’s culture and IPrincipal information to thread pool thread that will eventually call into your iterator code.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;When you construct an AsyncEnumerator, its constructor grabs a reference to the SynchronizationConext-derived object associated with the calling thread and saves this reference in a private field. Then, whenever my AsyncEnumerator calls into your iterator, it always does this via the SynchronizationContext-derived object. For Windows Forms/WPF, this means that your iterator gets invoked by queuing a request on your GUI thread’s message queue. This means, that your GUI thread MUST pump messages in order for your iterator to execute its code. The Devscovery attendee was calling AsyncEnumerator’s Execute method (instead of the preferred BeginExecute method) from their application’s GUI thread. The Execute method blocks until the iterator completes running and since this method was called form the GUI thread, the iterator was unable to run and so a deadlock occurred. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;This behavior is by-design as the whole purpose of the AsyncEnumerator is to execute code asynchronously and, in a GUI application, to keep the UI responsive. In fact, I always discourage calling Execute at all. The only reason why the AsyncEnumerator even offers the Execute method is for testing or to demonstrate functionality. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;However, I’d also like to point out that the AsyncEnumerator offers a SyncContext property and so, the Windows Forms/WPF developer can construct an AsyncEnumerator and then set its SyncContext property to null before calling Execute. This will allow thread pool threads (as opposed to the GUI thread) to call into your iterator – just make sure the code in your iterator doesn’t try to update any GUI controls. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;Finally,&amp;nbsp; I’d like to point out that an iterator can change its AsyncEnumerator’s SyncContext property within the iterator itself. This can be useful if you have some code in the iterator that can be run on any kind of thread and some code that must be run on the GUI thread (to update UI controls). In fact, in order to support this better, I’ve added a feature to the August 20&lt;SUP&gt;th&lt;/SUP&gt;, 2008 version of the library. With this new version, within an iterator, you can change the SyncContext property and execute a “yield return 0”.&amp;nbsp; When you do this, I will internally call ThreadPool.QueueUserWorkItem to have a thread pool thread continue your iterator. However, the thread pool thread will execute your iterator via the current SyncContext property. &amp;nbsp;Another user wanted this feature so that they could improve the performance of their iterator code where some code needs to update the GUI and some other code needs to just do some compute-bound work (which doesn’t have to be on the GUI thread). &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=6953" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>Yahoo Group Set-up for Power Threading Library</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/yahoo-group-set-up-for-power-threading-library.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/yahoo-group-set-up-for-power-threading-library.aspx</id><published>2008-06-26T07:21:00Z</published><updated>2008-06-26T07:21:00Z</updated><content type="html">&lt;P&gt;I have set up a Yahoo group for people interested in using my Power Threading Library. Currently, the group is public so anyone can join. I am the moderator of the group and so I can answer questions, offer comments/suggestions on the library's use, and address and bugs or feature requests. I will also make new version announcements via the group as well.&lt;/P&gt;
&lt;P&gt;Here is the group information:&lt;/P&gt;
&lt;P&gt;Library Link: &lt;A href="http://wintellect.com/PowerThreading.aspx"&gt;http://wintellect.com/PowerThreading.aspx&lt;/A&gt; &lt;BR&gt;Group link:&amp;nbsp;&amp;nbsp; &lt;A href="http://tech.groups.yahoo.com/group/PowerThreading/"&gt;http://tech.groups.yahoo.com/group/PowerThreading/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Post message: &lt;A href="mailto:PowerThreading@yahoogroups.com"&gt;PowerThreading@yahoogroups.com&lt;/A&gt; &lt;BR&gt;Subscribe:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="mailto:PowerThreading-subscribe@yahoogroups.com"&gt;PowerThreading-subscribe@yahoogroups.com&lt;/A&gt; &lt;BR&gt;Unsubscribe:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="mailto:PowerThreading-unsubscribe@yahoogroups.com"&gt;PowerThreading-unsubscribe@yahoogroups.com&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;I&amp;nbsp;look forward to meeting all of you in the group.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=6745" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>An interview with me about The Performance of Everyday Things</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/an-interview-with-me-about-the-performance-of-everyday-things.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/an-interview-with-me-about-the-performance-of-everyday-things.aspx</id><published>2008-06-26T03:15:00Z</published><updated>2008-06-26T03:15:00Z</updated><content type="html">&lt;P&gt;At the April 2008 Devscovery (&lt;A href="http://www.devscovery.com/"&gt;http://www.Devscovery.com&lt;/A&gt;) event in New York, I recently did a new talk entitled "The Performance of Everyday Things". The talk is about the performance of using everyday constructs in .NET/C# such as method calls, arrays, loops, garbage collection, and much more. I will be repeating this popular talk at the Redmond, WA Devscovery event in August 2008. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;After the talk April presentation, I did a small interview related to this topic. The interview can be found here: &lt;A href="http://getpixel8ed.com/shows/everything"&gt;http://getpixel8ed.com/shows/everything&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=6743" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>More about Windows SideShow</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/more-about-windows-sideshow.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/06/26/more-about-windows-sideshow.aspx</id><published>2008-06-26T03:13:00Z</published><updated>2008-06-26T03:13:00Z</updated><content type="html">&lt;P&gt;In addition to releasing the .NET Windows SideShow API that I created, the Windows SideShow team has also just released the Windows SideShow for Windows Mobile Developer Preview:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=79f19684-f862-4e02-a2b0-0003b4565f34&amp;amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=79f19684-f862-4e02-a2b0-0003b4565f34&amp;amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Install Instructions: &lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3432560&amp;amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3432560&amp;amp;amp;SiteID=1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In addition, the Windows SideShow team has announced in conjunction with nVidia a contest for the best SideShow gadgets produced in the next month or so; prizes are trips to nVidia’s nVision conference and a SideShow-enabled Dell XPS 420. For more info, see this web site: &lt;A href="http://www.nzone.com/object/nzone_prefacecontest_home.html"&gt;http://www.nzone.com/object/nzone_prefacecontest_home.html&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=6742" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>Power Threading Library (AsyncEnumerator &amp; SyncGate), .NET Rocks! and SideShow</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/05/28/power-threading-library-asyncenumerator-syncgate-net-rocks-and-sideshow.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/05/28/power-threading-library-asyncenumerator-syncgate-net-rocks-and-sideshow.aspx</id><published>2008-05-28T04:29:00Z</published><updated>2008-05-28T04:29:00Z</updated><content type="html">&lt;P&gt;Recently, I have been updating my Power Threading Library by adding some new features, fixing some minor bugs, and improving the documentation and sample apps to demonstrate its features. I am particulary proud of my AsyncEnumerator class which allows you to write asynchronous code using a synchronous programming model. With my AsyncEnumerator, you can, with minimum effort, convert any existing synchronous code into asynchronous code which scales extremely well while also increasing your application's responsiveness. For more information about my AsyncEnumerator, please see my Concurrent Affairs columns in MSDN magazine:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://msdn.microsoft.com/en-us/magazine/cc163323.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163323.aspx&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://msdn.microsoft.com/en-us/magazine/cc546608.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc546608.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And, if code that uses my AsyncEnumerator class needs to synchronize access to some shared data, then I also offer my SyncGate class. This class works with the AsyncEnumerator class to easily write code that accesses shared data without blocking any threads. Again, this increases scalabilty and responsiveness of any application or service. My SyncGate class is derived from my ReaderWriterGate class which you can read more about in this Concurrent Affairs column:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://msdn.microsoft.com/en-us/magazine/cc163532.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163532.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are several groups at Microsoft that are using my AsyncEnumerator internally. And, Wintellect has several other customers that are also using it very sucessfully. My Power Threading Library is free and if you decide to use it, I'd love to hear from you. Just add a comment to this blog entry (or e-mail me) telling me about your experience with it.&lt;/P&gt;
&lt;P&gt;On another note, I recently recorded a session on .NET Rocks! about the future of hardware. Check it out here: &lt;A href="http://www.dotnetrocks.com/default.aspx?showNum=343"&gt;http://www.dotnetrocks.com/default.aspx?showNum=343&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And, finally, the managed SideShow library that I created for Microsoft (over a year ago) has finally shipped! This library makes it very easy for .NET developers to create SideShow gadgets that run on Windows Vista. You can download the SDK from here: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=42f2f862-9987-406c-92a3-6523cf0eb3b3&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=42f2f862-9987-406c-92a3-6523cf0eb3b3&amp;amp;displaylang=en&lt;/A&gt;. The SDK &lt;SPAN style="COLOR:black;"&gt;installs the runtime and development components that are required to build and run gadgets for Windows SideShow in Managed Code using the .NET Framework. &amp;nbsp;Windows SideShow Project templates and Documentation are integrated with Visual Studio to give developers the optimal coding experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="COLOR:black;"&gt;The Runtime package (downloadable from &lt;FONT face=Calibri&gt;&lt;FONT size=3&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ca8e9272-68e8-4c0c-a239-560c21b66fca&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=ca8e9272-68e8-4c0c-a239-560c21b66fca&amp;amp;displaylang=en&lt;/A&gt;)&lt;/FONT&gt;&lt;/FONT&gt; is targeted for end users. It installs the runtime components that are required to run gadgets for Windows SideShow.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="COLOR:black;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="COLOR:black;"&gt;Microsoft is going to start promoting the use of the managed API at TechEd in June 2008 (next month).&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=6632" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="Jeffrey Richter Power Threading AsyncEnumerator SyncGate SideShow .NET Rocks" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/Jeffrey+Richter+Power+Threading+AsyncEnumerator+SyncGate+SideShow+.NET+Rocks/default.aspx" /></entry><entry><title>eBooks</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/03/14/ebooks.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/03/14/ebooks.aspx</id><published>2008-03-14T16:35:00Z</published><updated>2008-03-14T16:35:00Z</updated><content type="html">&lt;P&gt;Many readers have asked me if an electronic version of my book is available. Unfortunately, the answer is no and there are no plans to make one available. Some older versions of my book were available in electronic form but Microsoft Press and I discovered that many people took the file and posted it on the web. Some people even sold the files which they clearly had no right to do. So, we decided to stop offerring my books in electronic form. It is sad that a few bad apples spoil the bunch.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=5569" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>Windows via C/C++ Table of Contents</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/03/14/windows-via-c-c-table-of-contents.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/03/14/windows-via-c-c-table-of-contents.aspx</id><published>2008-03-14T16:27:00Z</published><updated>2008-03-14T16:27:00Z</updated><content type="html">&lt;P&gt;Some (potential) readers have asked me to post the complete table of contents for my new Windows via C/C++ book. Here it is:&lt;/P&gt;&lt;B&gt;&lt;FONT face=Segoe-Semibold size=2&gt;&lt;FONT face=Segoe-Semibold size=2&gt;
&lt;P align=left&gt;Part I Required Reading&lt;BR&gt;&amp;nbsp;1 Error Handling&lt;BR&gt;&amp;nbsp;2 Working with Characters and Strings&lt;BR&gt;&amp;nbsp;3 Kernel Objects&lt;/P&gt;
&lt;P align=left&gt;Part II Getting Work Done&lt;BR&gt;&amp;nbsp;4 Processes&lt;BR&gt;&amp;nbsp;5 Jobs&lt;BR&gt;&amp;nbsp;6 Thread Basics&lt;BR&gt;&amp;nbsp;7 Thread Scheduling, Priorities, and Affinities&lt;BR&gt;&amp;nbsp;8 Thread Synchronization in User Mode&lt;BR&gt;&amp;nbsp;9 Thread Synchronization with Kernel Objects&lt;BR&gt;&amp;nbsp;10 Synchronous and Asynchronous Device I/O&lt;BR&gt;&amp;nbsp;11 The Windows Thread Pool&lt;BR&gt;&amp;nbsp;12 Fibers&lt;/P&gt;
&lt;P align=left&gt;Part III Memory Management&lt;BR&gt;&amp;nbsp;13 Windows Memory Architecture&lt;BR&gt;&amp;nbsp;14 Exploring Virtual Memory&lt;BR&gt;&amp;nbsp;15 Using Virtual Memory in Your Own Applications&lt;BR&gt;&amp;nbsp;16 A Thread’s Stack&lt;BR&gt;&amp;nbsp;17 Memory-Mapped Files&lt;BR&gt;&amp;nbsp;18 Heaps&lt;/P&gt;
&lt;P align=left&gt;Part IV Dynamic-Link Libraries&lt;BR&gt;&amp;nbsp;19 DLL Basics&lt;BR&gt;&amp;nbsp;20 DLL Advanced Techniques&lt;BR&gt;&amp;nbsp;21 Thread-Local Storage&lt;BR&gt;&amp;nbsp;22 DLL Injection and API Hooking&lt;/P&gt;
&lt;P align=left&gt;Part V Structured Exception Handling&lt;BR&gt;&amp;nbsp;23 Termination Handlers&lt;BR&gt;&amp;nbsp;24 Exception Handlers and Software Exceptions&lt;BR&gt;&amp;nbsp;25 Unhandled Exceptions, Vectored Exception Handling, and C++ Exceptions&lt;BR&gt;&amp;nbsp;26 Error Reporting and Application Recovery&lt;/P&gt;
&lt;P align=left&gt;Part VI Appendixes&lt;BR&gt;&amp;nbsp;A The Build Environment&lt;BR&gt;&amp;nbsp;B Message Crackers, Child Control Macros, and API Macros&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/B&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=5568" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="richter book windows c c++" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/richter+book+windows+c+c_2B002B00_/default.aspx" /></entry><entry><title>CLR via C# will NOT be updated for .NET 3.5</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/02/18/clr-via-c-will-not-be-updated-for-net-3-5.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2008/02/18/clr-via-c-will-not-be-updated-for-net-3-5.aspx</id><published>2008-02-18T11:08:00Z</published><updated>2008-02-18T11:08:00Z</updated><content type="html">&lt;P&gt;I get a lot of e-mails asking me if I will be updating my CLR via C# book for .NET 3.5. This blog entry will asnwer this question.&lt;/P&gt;
&lt;P&gt;Here is the short answer:&amp;nbsp;NO, I am not updating the book.&lt;/P&gt;
&lt;P&gt;Here is the long answer:&amp;nbsp;My CLR via C# book was&amp;nbsp;last updated for .NET 2.0 and I have no intention of updating the book for .NET 3.0 or .NET 3.5. The reason is because my book is really about the CLR and .NET 3.0 and 3.5 still run on top of CLR 2.0. &lt;/P&gt;
&lt;P&gt;.NET 3.0 and 3.5 is really CLR 2.0 plus some new DLLs that contain new class libraries for WPF, WCF, WF, Addin support and Linq support. My book has never covered any ancillary class libraries; it has always focused on the CLR itself and the small subset of class library types that talk directly to the runtime engine.&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0in 0in 0pt;"&gt;In addition, .NET 3.0 shipped with C# 2.0 and so no changes were made to the C# language/compiler either. Of course, .NET 3.5 does ship with C# 3.0 which does offer many new features (automatically-implemented properties, implicitly typed local variables, extension methods, lambda expressions, object initializers, anonymous types, implicitly typed arrays, partial methods, query expressions, and expression tress). However, all of these features are just compiler syntactic sugar to make syntax easier for programmers. Many of these features are very simple to understand and grasp so I feel that it is not worth updating my book just to cover the new syntax offered by C# to accomplish things you already could do.&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0in 0in 0pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN:0in 0in 0pt;"&gt;While&amp;nbsp;many of the C# 3.0 features are needed to fully leverage the various set of LINQ technologies (Linq to Object, Linq to XML, Linq to Sql, Linq to DataSet, and Linq to Entities). And, while I will address the new C# language features in some future edition of my book (to coincide with the release of a new CLR version), I will never cover LINQ itself; just the architecture that makes LINQ possible.&lt;/P&gt;
&lt;P&gt;Also, I just recently completed updating my Windows book (Windows via C/C++, 5th Edition, Microsoft Press) for Windows Vista and Windows Server 2008.&amp;nbsp; &lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=5317" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="richter book clr c#" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/richter+book+clr+c_2300_/default.aspx" /></entry><entry><title>Book Update</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2007/06/16/book-update.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2007/06/16/book-update.aspx</id><published>2007-06-16T02:28:00Z</published><updated>2007-06-16T02:28:00Z</updated><content type="html">&lt;P&gt;First, the bad news: A while ago, Microsoft Press and I bantered around the idea of producing a version of my "CLR via C#" book targeted towards C++/CLI users. The book was going to be titled "CLR via C++/CLI" (catchy title, eh?). As I am not a C++/CLI expert,we thought we'd find another author for me to work with to produce the book. Unfortunatel, we were unable to find an author and this book project is officially dead.&lt;/P&gt;
&lt;P&gt;Now, the good news: My last Win32 book came out around 2000. Several years ago, Microsoft Press declared the book out-of-print which made it near impossible for anyone to fnd. Well, I am revising the book wih a co-author. The book will be updated for Windows Vista/Server 2008 and the book should be out by the end of 2007. The tentative title is "Windows via C++, 5th Edition"&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=3582" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author></entry><entry><title>Windows SideShow .NET Framework Components 1.0 (Beta)</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2007/01/18/windows-sideshow-net-framework-components-1-0-beta.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2007/01/18/windows-sideshow-net-framework-components-1-0-beta.aspx</id><published>2007-01-19T04:03:56Z</published><updated>2007-01-19T04:03:56Z</updated><content type="html">&lt;P&gt;Well, I'm very pleased to announce that the "Windows SideShow .NET Framework Components 1.0 (Beta)" is avialable as of today (January 18, 2007).&lt;/P&gt;
&lt;P&gt;You can download it from here: &lt;SPAN style="FONT-SIZE:11pt;FONT-FAMILY:'Calibri','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:'Times New Roman';mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=06FA2ACE-A42D-4117-821C-BCE80786F1C4&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=06FA2ACE-A42D-4117-821C-BCE80786F1C4&amp;amp;displaylang=en&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This is the managed API that I personally implemented for Microsoft to make it easy for managed developers to write SideShow gadget applications for Windows Vista.&lt;/P&gt;
&lt;P&gt;I wrote about SideShow and this API in the January 2007 issue of MSDN Magazine. The article can be found here: &lt;A href="http://msdn.microsoft.com/msdnmag/issues/07/01/SideShow/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/07/01/SideShow/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;My API is being used to help produce Media Center remote controls such as these:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.cepro.com/products/press/16727.html"&gt;http://www.cepro.com/products/press/16727.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.engadget.com/2006/12/21/ricavisions-vista-mce-sideshow-remote-does-bluetooth-at-100-met/"&gt;http://www.engadget.com/2006/12/21/ricavisions-vista-mce-sideshow-remote-does-bluetooth-at-100-met/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.engadget.com/2007/01/09/hands-on-with-a-bunch-of-sideshow-remotes/"&gt;http://www.engadget.com/2007/01/09/hands-on-with-a-bunch-of-sideshow-remotes/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=2607" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="Jeffrey Richter" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/Jeffrey+Richter/default.aspx" /></entry><entry><title>Jeffrey Richter Update</title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2006/10/18/jeffrey-richter-update.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2006/10/18/jeffrey-richter-update.aspx</id><published>2006-10-18T04:40:22Z</published><updated>2006-10-18T04:40:22Z</updated><content type="html">&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;I have been silent on the blog as usual but thought I'd add an entry today bring you up-to-date on my activities.&lt;/P&gt;
&lt;P&gt;I have been extremely busy. Wintellect has gotten some big deals lately which has had me travelling and teaching my .NET Framework class and my new Building Responsive, Reliable, and Scalable Applications and Components class (AKA my Threading class).&lt;/P&gt;
&lt;P&gt;In between all this work, I have been reseaching new Windows Vista features that affect threading such as I/O cancellation, wait chain traversal, logical processor information, I/O priorities, transactional file system and registry, and more. In fact, I've added support for a lot of this stuff in my Power Threading library already so that managed developers can use a lot of this stuff when running on Vista. I also plan to write about this stuff in an upcoming Concurrent Affairs column in MSDN Magazine.&lt;/P&gt;
&lt;P&gt;Also, Windows Vista has a new feature called SideShow and Microsoft contracted me to produce the managed interface to this new feature. After Vista ships, Microsoft will make the Microsoft.SideShow.dll (which was created by me) available either via Windows Update and/or in the Vista SDK. I explain how to use this new Vista feature and my library in an upcoming MSDN Magazine article (I think the article comes out in the January 2007 issue).&lt;/P&gt;
&lt;P&gt;I really like the new SideShow feature and expect to be doing more work with Microsoft to help bring this feature more into mainstream usage.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=2611" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="Jeffrey Richter" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/Jeffrey+Richter/default.aspx" /></entry><entry><title>Accessing Power Collections </title><link rel="alternate" type="text/html" href="http://www.wintellect.com/CS/blogs/jeffreyr/archive/2006/10/18/accessing-power-collections.aspx" /><id>http://www.wintellect.com/CS/blogs/jeffreyr/archive/2006/10/18/accessing-power-collections.aspx</id><published>2006-10-18T04:31:17Z</published><updated>2006-10-18T04:31:17Z</updated><content type="html">&lt;P&gt;The Power Collections Library on &lt;A href="http://Wintellect.com"&gt;http://Wintellect.com&lt;/A&gt; no longer requires that you register with Wintellect.&lt;/P&gt;
&lt;P&gt;As of yesterday, you can simply download the file and start using the Power Collections immediately.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=2616" width="1" height="1"&gt;</content><author><name>JeffreyR</name><uri>http://www.wintellect.com/CS/members/JeffreyR.aspx</uri></author><category term="Jeffrey Richter" scheme="http://www.wintellect.com/CS/blogs/jeffreyr/archive/tags/Jeffrey+Richter/default.aspx" /></entry></feed>