<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.infosupport.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Frank Bakker - All Comments</title><link>http://blogs.infosupport.com/blogs/frankb/default.aspx</link><description>Frank Bakker talks about software development</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#201858</link><pubDate>Fri, 19 Mar 2010 13:13:15 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:201858</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;Following up on the requests above we now have both posters available for download from our website.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://www.infosupport.com/linq"&gt;www.infosupport.com/linq&lt;/a&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=201858" width="1" height="1"&gt;</description></item><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#201820</link><pubDate>Wed, 10 Mar 2010 11:08:07 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:201820</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;Hi Daniel,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll check your request for the download with our guys at marketing, unfortunately I&amp;#39;m only responsible for the content&amp;#39;, not the distribution of these posters&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=201820" width="1" height="1"&gt;</description></item><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#201819</link><pubDate>Wed, 10 Mar 2010 08:05:24 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:201819</guid><dc:creator>Daniel Wolf</dc:creator><description>&lt;p&gt;Any chance of getting the second poster as a download, too?&lt;/p&gt;
&lt;p&gt;We thirty developers, but I can&amp;#39;t reasonably ask you to send us that many prints. Plus, the Dutch form is kind of a problem. For the life of me, I could not figure out what the mandatory field &amp;quot;Voorletter(s)&amp;quot; meant - I ended up simply re-typing my name. Apparently, that was not correct, as I haven&amp;#39;t received an answer since.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=201819" width="1" height="1"&gt;</description></item><item><title>re: CacheDictionary for .Net 3.5, using ReaderWriterLockSlim ?</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/15/CacheDictionary-for-.Net-3.5_2C00_-using-ReaderWriterLockSlim-_3F00_.aspx#201811</link><pubDate>Tue, 09 Mar 2010 11:51:15 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:201811</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;Hi Tamus, thanks for your comments.&lt;/p&gt;
&lt;p&gt;Did you by any chance do any perfromce testing to compare the ReaderWriterLockSlim to an exclusive Mutex / Lock?&lt;/p&gt;
&lt;p&gt;The point of my post (and Joe&amp;#39;s) is that ReaderWriterLocks are in reality slower then mutexes in most scenario&amp;#39;s. The only exception beeing when readlocks are held for a relative long time.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=201811" width="1" height="1"&gt;</description></item><item><title>re: CacheDictionary for .Net 3.5, using ReaderWriterLockSlim ?</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/15/CacheDictionary-for-.Net-3.5_2C00_-using-ReaderWriterLockSlim-_3F00_.aspx#201806</link><pubDate>Mon, 08 Mar 2010 18:21:54 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:201806</guid><dc:creator>TamusJRoyce</dc:creator><description>&lt;p&gt;I have a similar setup using an IBindingListView here at work using the ReaderWriterLockSlim. &amp;nbsp;But instead of making a single thread-safe method not found on the class, I have made every implemented interface of IBindingListView thread safe.&lt;/p&gt;
&lt;p&gt;I had to make the ReaderWriterLockSlim allow recursion via the constructor, but it seems to work very well.&lt;/p&gt;
&lt;p&gt;I use [Enter/Exit]UpgradeableReadLock() for reading, and [Enter/Exit]WriteLock() for writing. &amp;nbsp;I also have an IEnumerable/IDisposable object that holds a reference to the collection and calls the collections ReadLocking/Unlocking automatically, making For Each calls thread safe.&lt;/p&gt;
&lt;p&gt;And what about Modification while Enumeration? &amp;nbsp;Simple. &amp;nbsp;I use regular locking on a separate List(Of T) in which caches items being added/inserted until all ReadLocks &amp;amp; WriteLocks are dissolved. &amp;nbsp;Then I simply get a write lock, and write that back to the collection.&lt;/p&gt;
&lt;p&gt;If it wasn&amp;#39;t that it was written at work/licensing, I would gladly open source it, so it could be applied to Dictionaries, tables, rows, etc...&lt;/p&gt;
&lt;p&gt;It is quite a bit more complicated, but it is possible to have a fully thread safe collection that automatically performs thread safety for you.&lt;/p&gt;
&lt;p&gt;With the combination of PFX, this could add a new layer of intuitiveness to this powerful framework...&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=201806" width="1" height="1"&gt;</description></item><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#161618</link><pubDate>Tue, 19 Jan 2010 07:49:35 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:161618</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;Hi Francis,&lt;/p&gt;
&lt;p&gt;The Irst poster (the one on the right) is only available in print, we will sent it to you free of charge if you fill in the form on the website. The second one (on the left side) is available for download in pdf.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=161618" width="1" height="1"&gt;</description></item><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#161516</link><pubDate>Mon, 18 Jan 2010 20:13:03 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:161516</guid><dc:creator>Francis Dallaire</dc:creator><description>&lt;p&gt;Is it just me or there&amp;#39;s only the first part of the poster on the website ? Thanks&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=161516" width="1" height="1"&gt;</description></item><item><title>re: New coordination datastructures in .Net 4.0 Beta 2</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/11/12/new-coordination-datastructures-in-net-4-0-beta-2.aspx#158968</link><pubDate>Tue, 12 Jan 2010 07:56:44 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:158968</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;Hi Hero, thanks for your commens&lt;/p&gt;
&lt;p&gt;What I did not describe in tis or any of my previous posts on this subject is the usage pattern for this style of cache. This might be a tipic for a next post.&lt;/p&gt;
&lt;p&gt;In the way I use this cache, I actually do use an inline delegate for the producer that captures the key and potentially any other required variables from the surrounding scope to create the new value. This should not be a problem, because the cachekey is also used as the index in the underlying ConcurrentDictionary, so each different key will have a different instance of Lazy&amp;lt;T&amp;gt;.&lt;/p&gt;
&lt;p&gt;The new GetOrAdd operation on ConcurentDictionary does solve this problem by providing the key to the producer delegate. You could just use ConcurrentDictionary directly without the need for my CacheDictionary at all. The only thing you do net get from ConcurrentDictionary.GetOrAdd() is the guarantee thet the producer will be executed exectly once, depending on your scenario that might or might not be a problem.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=158968" width="1" height="1"&gt;</description></item><item><title>re: New coordination datastructures in .Net 4.0 Beta 2</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/11/12/new-coordination-datastructures-in-net-4-0-beta-2.aspx#158426</link><pubDate>Mon, 11 Jan 2010 12:35:48 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:158426</guid><dc:creator>horo</dc:creator><description>&lt;p&gt;Hi Frank,&lt;/p&gt;
&lt;p&gt;Thx for the idea of using Lazy&amp;lt;T&amp;gt; with ConcurrentDictionary.&lt;/p&gt;
&lt;p&gt;However this implementation CacheDictionary leaves an unresolved problem open: producer() needs to know the &amp;quot;key&amp;quot; to create its return value. Unfortunatelly Lazy&amp;lt;T&amp;gt; does not provide a standard way to pass parameters to producer().&lt;/p&gt;
&lt;p&gt;Using any inline implementation for producer(), and referencing the &amp;quot;key&amp;quot; local variable of Fetch method of course not a solution, because the return cacheItem.Value; &amp;nbsp; statement potentiali can run in an other thread, with other actual &amp;quot;key&amp;quot; parameter than the thread which added the cacheItem to the dictionary.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=158426" width="1" height="1"&gt;</description></item><item><title>New coordination datastructures in .Net 4.0 Beta 2</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2008/12/31/Implementing-a-Thread-Safe-cache-using-the-Parallel-Extensions.aspx#36692</link><pubDate>Thu, 12 Nov 2009 08:54:41 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:36692</guid><dc:creator>Frank Bakker</dc:creator><description>&lt;p&gt;To be honest a have not spent too much time looking at .Net 4.0 beta 2 yet. But I do keep up with the&lt;/p&gt;
&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=36692" width="1" height="1"&gt;</description></item><item><title>re: Visualizing Linq operators: The Info Support Linq Posters</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/17/Visualizing-Linq-operators_3A00_-The-Info-Support-Linq-Posters.aspx#16719</link><pubDate>Mon, 24 Aug 2009 12:15:03 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16719</guid><dc:creator>Buck Thompson</dc:creator><description>&lt;p&gt;I was just thinking about sticker and you’ve really helped out. Thanks!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16719" width="1" height="1"&gt;</description></item><item><title>re: SQL Server 2005 vs. Office Web Components</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2007/02/19/SQL-Server-2005-vs.-Office-Web-Components.aspx#16677</link><pubDate>Tue, 18 Aug 2009 15:28:50 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16677</guid><dc:creator>peezy</dc:creator><description>&lt;p&gt;I agree!&lt;/p&gt;
&lt;p&gt;Manually installing the OWC11 was a lot easier!!!&lt;/p&gt;
&lt;p&gt;Thanks MikeP...&lt;/p&gt;
&lt;p&gt;P.S. &amp;nbsp;As mentioned earlier, I would not be able to do my job w/out blogs....&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16677" width="1" height="1"&gt;</description></item><item><title>re: CacheDictionary for .Net 3.5, using ReaderWriterLockSlim ?</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/15/CacheDictionary-for-.Net-3.5_2C00_-using-ReaderWriterLockSlim-_3F00_.aspx#16478</link><pubDate>Tue, 04 Aug 2009 11:26:04 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16478</guid><dc:creator>frankb</dc:creator><description>&lt;p&gt;The confusion comes from the way LazyInit&amp;lt;T&amp;gt; (or Lazy&amp;lt;T&amp;gt;) works. The constructor retrieves the delegate (producer) but does not invoke this delegate yet. &lt;/p&gt;
&lt;p&gt;The delegate is only invoked the first time the Value propertiy is retrieved which is done outside the lock()&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16478" width="1" height="1"&gt;</description></item><item><title>re: CacheDictionary for .Net 3.5, using ReaderWriterLockSlim ?</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/15/CacheDictionary-for-.Net-3.5_2C00_-using-ReaderWriterLockSlim-_3F00_.aspx#16468</link><pubDate>Mon, 03 Aug 2009 20:35:44 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16468</guid><dc:creator>Mike</dc:creator><description>&lt;p&gt;Disregard, I see it now.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16468" width="1" height="1"&gt;</description></item><item><title>re: CacheDictionary for .Net 3.5, using ReaderWriterLockSlim ?</title><link>http://blogs.infosupport.com/blogs/frankb/archive/2009/03/15/CacheDictionary-for-.Net-3.5_2C00_-using-ReaderWriterLockSlim-_3F00_.aspx#16467</link><pubDate>Mon, 03 Aug 2009 20:32:21 GMT</pubDate><guid isPermaLink="false">56f6167b-0c51-4839-ab2d-34653eeb5c9c:16467</guid><dc:creator>Mike</dc:creator><description>&lt;p&gt;You will deadlock if one of the thread &amp;#39;producer&amp;#39;s infinitely blocks on line 14 in the last example.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.infosupport.com/aggbug.aspx?PostID=16467" width="1" height="1"&gt;</description></item></channel></rss>