<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeroens blog &#187; VB</title>
	<atom:link href="http://blog.bn2vs.com/tag/vb/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bn2vs.com</link>
	<description>Blog of Jeroen De Dauw. The latest news on my open source work and interests.</description>
	<lastBuildDate>Wed, 28 Jul 2010 16:09:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>BN+ Converter Pro 1.1.0 released</title>
		<link>http://blog.bn2vs.com/2010/05/01/bn-converter-pro-1-1-0-released/</link>
		<comments>http://blog.bn2vs.com/2010/05/01/bn-converter-pro-1-1-0-released/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 23:52:54 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net 4.0]]></category>
		<category><![CDATA[Binary Converter]]></category>
		<category><![CDATA[BN+ Converter Pro]]></category>
		<category><![CDATA[BN+ Framework]]></category>
		<category><![CDATA[BN+ Library]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Hashing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=809</guid>
		<description><![CDATA[Two months back I dug up the project files of BN+ Converter Pro, a .Net application I created when I was in secondary school, and did some high level refactoring to optimize it for .Net 4.0 and version 3 of my .Net class library. This was soon after I released a similar update for BN+ [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2010/05/01/bn-converter-pro-1-1-0-released/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Two months back I dug up the project files of BN+ Converter Pro, a .Net application I created when I was in secondary school, and did some high level refactoring to optimize it for .Net 4.0 and version 3 of my .Net class library. This was soon after I released <a href="http://blog.bn2vs.com/2010/02/15/bn-brute-force-hash-attacker-1-2-0-released/">a similar update</a> for BN+ Brute Force Hash Attacker, another of my old .Net apps. On top of the changes I made, and a very few new features I&#8217;ve added, the code is now publicly available under the terms of the GNU General Public License v3 or later <a href="http://bncpro.svn.sourceforge.net/viewvc/bncpro/">on SourceForge</a>. I waited with releasing this since I wanted the app to be compiled with the stable release of .Net framework, which was released a while back now.</p>
<p><strong>Changes in this release</strong></p>
<pre>* Use of <a href="http://wiki.bn2vs.com/BN%2B_Library">BN+ Library</a> 3.0.1
* Use of native components of .Net framework 4.0
* Implemented a new update platform
* Refactored namespaces and moved around a bunch of files
* Redesigned the about interface
* Redesigned the help menu
* Moved documentation to a wiki page
* Added ROT 5, ROT 13, ROT 18 and ROT 48 codecs
* Made the source code available under the GPL on SourceForge
</pre>
<p><strong>Downloads</strong></p>
<ul>
<li><a href="https://sourceforge.net/projects/bncpro/files/1.1.0/BN%2B%20Converter%20Pro.zip/download">Setup file (zip, windows installer, includes update platform)</a></li>
<li><a href="http://bncpro.svn.sourceforge.net/viewvc/bncpro/bin/Debug.tar.gz?view=tar">Executables tarball (latest version of the executables, straight from the SVN repo)</a></li>
<li><a href="http://bncpro.svn.sourceforge.net/viewvc/bncpro/">SVN repostory</a></li>
</ul>
<p><strong>Links</strong></p>
<ul>
<li><a href="https://sourceforge.net/projects/bncpro/">Project home</a></li>
<li><a href="http://www.binary-converter.com/">Documentation</a></li>
</ul>
<p>This is a screen shot of the previous version. This part of the  interface is pretty much unchanged.</p>
<p><a href="http://binary-converter.com"><img class="alignnone size-full wp-image-811" title="BN+ Converter Pro 1.0.6" src="http://blog.bn2vs.com/wp-content/uploads/2010/05/Bnc1.0.6.gif" alt="BN+ Converter Pro 1.0.6" width="517" height="299" /></a></p>
<p>This screenshot shows the redesigned about interface.</p>
<p><a href="http://www.binary-converter.com/"><img class="alignnone size-full wp-image-812" title="BN+ Converter Pro 1.1.0 about screen" src="http://blog.bn2vs.com/wp-content/uploads/2010/05/bncAbout.gif" alt="BN+ Converter Pro 1.1.0 about screen" width="601" height="417" /></a></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<pre><span class="hl slc">the terms of the GNU General Public License</span>
</pre>
</div>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F&amp;title=BN%2B+Converter+Pro+1.1.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F&amp;title=BN%2B+Converter+Pro+1.1.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F&amp;title=BN%2B+Converter+Pro+1.1.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F&amp;headline=BN%2B+Converter+Pro+1.1.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=BN%2B+Converter+Pro+1.1.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=BN%2B+Converter+Pro+1.1.0+released&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=BN%2B+Converter+Pro+1.1.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=BN%2B+Converter+Pro+1.1.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=BN%2B+Converter+Pro+1.1.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F&amp;title=BN%2B+Converter+Pro+1.1.0+released&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F05%2F01%2Fbn-converter-pro-1-1-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2010/05/01/bn-converter-pro-1-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BN+ Brute Force Hash Attacker 1.2.0 released</title>
		<link>http://blog.bn2vs.com/2010/02/15/bn-brute-force-hash-attacker-1-2-0-released/</link>
		<comments>http://blog.bn2vs.com/2010/02/15/bn-brute-force-hash-attacker-1-2-0-released/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 19:50:35 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net 4.0]]></category>
		<category><![CDATA[bfha]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=712</guid>
		<description><![CDATA[A few days back I decided I should release an update including a new update platform to some of my old applications. Apparently I had deleted the source of my little class library that I used for these applications a while back, and had to do a binary search through my backup archives to find [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2010/02/15/bn-brute-force-hash-attacker-1-2-0-released/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>A few days back I decided I should release an update including a new update platform to some of my old applications. Apparently I had deleted the source of my little class library that I used for these applications a while back, and had to do a binary search through my backup archives to find the latest version. While implementing the new update platform in one of these apps, BN+ Brute Force Hash Attacker, I did a bunch of high level refactoring, both in the app itself and the used library, and decided to put them both freely available on SourceForge. I also decided to make some changes to the interface of BN+ BFHA, and replace the usage of a C# library for BigInteger support with the stuff that comes natively with .Net framework 4.0. So basically, after having put this app on the shelve for about a year, here is a new version, which might very well be the final one for this app.</p>
<p><strong>Changes in 1.2.0</strong></p>
<pre>* Replaced custom BigInteger class by native .Net 4.0 class.
* Replaced update platform with native ClickOnce deployment updater.
* Refactored code structure and reduced required assemblies to BN+ Framework core.
* Improved Help menu links.
* Fixed Import/Export issue.
* Redesigned about screen.
</pre>
<p><strong>Downloads</strong></p>
<ul>
<li><a href="https://sourceforge.net/projects/bfha/files/BN%2B%20Brute%20Force%20Hash%20Attacker%201.2.0.zip/download">Setup file (zip, windows installer, includes update platform)</a></li>
<li><a href="http://bfha.svn.sourceforge.net/viewvc/bfha/bin/Debug.tar.gz?view=tar">Executables tarball (latest version of the executables)</a></li>
<li><a href="http://bfha.svn.sourceforge.net/viewvc/bfha/">SVN repostory</a></li>
</ul>
<p><strong>Links</strong></p>
<ul>
<li><a href="https://sourceforge.net/projects/bfha/">Project home</a></li>
<li><a href="http://wiki.bn2vs.com/BnBfha">Documentation</a></li>
</ul>
<p>This is a screen shot of the previous version. This part of the interface is pretty much unchanged.</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2010/02/bnbfha.gif"><img class="alignnone size-full wp-image-713" title="BN+ Brute Force Hash  Attacker" src="http://blog.bn2vs.com/wp-content/uploads/2010/02/bnbfha.gif" alt="BN+ Brute Force Hash Attacker" width="508" height="549" /></a></p>
<p>I&#8217;m also planning to release the new version of my class library that&#8217;s used for this app, which I renamed to <a href="http://wiki.bn2vs.com/BnLibrary">BN+ Library</a>, in the near future <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F&amp;title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F&amp;title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F&amp;title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F&amp;headline=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F&amp;title=BN%2B+Brute+Force+Hash+Attacker+1.2.0+released&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2010%2F02%2F15%2Fbn-brute-force-hash-attacker-1-2-0-released%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2010/02/15/bn-brute-force-hash-attacker-1-2-0-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.Net Download Library: the first results</title>
		<link>http://blog.bn2vs.com/2009/12/21/net-download-library-the-first-results/</link>
		<comments>http://blog.bn2vs.com/2009/12/21/net-download-library-the-first-results/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 22:57:13 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=622</guid>
		<description><![CDATA[Over the last few days, I&#8217;ve done some work on .Net download library, the successor to my FileDownloader class. I started working on this project about half a year ago, and had quite some difficulties picking up the thread again after GSoC 2009, since I was in the middle of rewriting the code I was [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/12/21/net-download-library-the-first-results/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Over the last few days, I&#8217;ve done some work on <a href="http://sourceforge.net/projects/download-lib" target="_blank">.Net download library</a>, the successor to my <a href="http://www.codeproject.com/KB/vb/FileDownloader.aspx" target="_blank">FileDownloader class</a>. I started working on this project about half a year ago, and had quite some difficulties picking up the thread again after GSoC 2009, since I was in the middle of rewriting the code I was simultaneously translating from MyDownloader, mainly with the handling of the worker threads. The core work has been completed now, meaning that you can use the lib to download files, and track their progress. This is still in experimental stage though, and the pause and resume functionality has not yet been adapted to my new worker implementation.</p>
<p>In any case, the first release, which will be 0.1, is in sight now. This release will cover the basic functionality promised by the library; segmented downloads in the background that you can pause and resume, and can track the progress of (percentage, speed, downloaded bytes, remaining bytes, remaining time, elapsed time). After this, I&#8217;m planning to do some big rewrites of things that come from MyDownloader I&#8217;m not really happy with. This will mainly be making the whole library more OOP and event based. Only after that I&#8217;ll start on the other things I originally scheduled, such as prioritizing downloads and bandwidth limitations. By that time, .Net fw 4.0 will probably be released, and it&#8217;s a good possibility I&#8217;ll start using post .Net 2.0 technologies then, mainly things found in the <a href="http://en.wikipedia.org/wiki/Task_Parallel_Library#TPL" target="_blank">Task Parallel Library</a>.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F&amp;title=.Net+Download+Library%3A+the+first+results" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F&amp;title=.Net+Download+Library%3A+the+first+results" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F&amp;title=.Net+Download+Library%3A+the+first+results" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F&amp;headline=.Net+Download+Library%3A+the+first+results" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=.Net+Download+Library%3A+the+first+results&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=.Net+Download+Library%3A+the+first+results&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=.Net+Download+Library%3A+the+first+results&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=.Net+Download+Library%3A+the+first+results&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=.Net+Download+Library%3A+the+first+results&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F&amp;title=.Net+Download+Library%3A+the+first+results&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F12%2F21%2Fnet-download-library-the-first-results%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/12/21/net-download-library-the-first-results/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Progressbar with percentage</title>
		<link>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/</link>
		<comments>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 21:12:10 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Progressbar]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=523</guid>
		<description><![CDATA[Last few months I haven&#8217;t really done a lot of .Net work, apart from the .Net DownloadLib project, and therefore also not released anything. After someone on The Code Project gave me a poke on an update to my custom made ProgressbarWithPercentage component I had promised, I made an update to that component and released [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Last few months I haven&#8217;t really done a lot of .Net work, apart from the <a href="http://blog.bn2vs.com/tag/downloadlib/" target="_blank">.Net DownloadLib project</a>, and therefore also not released anything. After someone on <a href="http://www.codeproject.com/" target="_blank">The Code Project</a> gave me a poke on an update to my custom made <a href="http://www.codeproject.com/KB/progress/progressbar-percentage.aspx" target="_blank">ProgressbarWithPercentage component</a> I had promised, I made an update to that component and released it.</p>
<p>ProgressbarWithPercentage is not at version 1.0.10. The changes I made since the last release are:</p>
<ul>
<li>Style support for XP and earlier</li>
<li>You can now customize the display format of the percentage</li>
</ul>
<p>I also updated the demo, to include both an XP and a Vista/Win7 layout, and added a property grid that enables you to change the properties of the progress bars at runtime. On top of that, I decided it was a good idea to create a repository for this component <a href="http://sourceforge.net/projects/pprogressbar/" target="_blank">on SourceForge</a>, where you can now freely download and browse the code. I&#8217;ve send an update request to TCP with a new version of my article, but this has yet to appear.</p>
<p><strong>Downloads:</strong></p>
<ul>
<li><a href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=214" target="_blank">Demo applications</a></li>
<li><a href="http://code.bn2vs.com/viewtopic.php?mode=attach&amp;id=215" target="_blank">Source project</a></li>
<li><a href="http://pprogressbar.svn.sourceforge.net/viewvc/pprogressbar/" target="_blank">SVN repo</a></li>
</ul>
<p>Some nice screenshots of the new demo (click to enlarge):</p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentage7.jpg"><img class="size-full wp-image-524 alignnone" title="ProgressbarWithPercentage v1.0.10 Vista/Win7 demo" src="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentage7.jpg" alt="ProgressbarWithPercentage v1.0.10 Vista/Win7 demo" width="605" height="254" /></a></p>
<p><a href="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentageXP.jpg"><img class="alignnone size-full wp-image-525" title="ProgressbarWithPercentage v1.0.10 XP/earlier demo" src="http://blog.bn2vs.com/wp-content/uploads/2009/11/pBarPercentageXP.jpg" alt="ProgressbarWithPercentage v1.0.10 XP/earlier demo" width="605" height="255" /></a></p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;headline=Progressbar+with+percentage" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Progressbar+with+percentage&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Progressbar+with+percentage&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F&amp;title=Progressbar+with+percentage&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F11%2F03%2Fprogressbar-with-percentage%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/11/03/progressbar-with-percentage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Class TypeHashTable</title>
		<link>http://blog.bn2vs.com/2009/09/22/class-typehashtable/</link>
		<comments>http://blog.bn2vs.com/2009/09/22/class-typehashtable/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 15:27:42 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[HashTable]]></category>
		<category><![CDATA[Type]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=441</guid>
		<description><![CDATA[While working on the Download class of the .Net Download Library yesterday, I came across the need to add and retrieve items from a HashTable of a fixed type. After asking at MSDN forums, someone suggested creating for example a StringHashTable, which then contains a number of Shadow methods that ctype a parameter of the [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/09/22/class-typehashtable/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>While working on the Download class of the <a href="https://sourceforge.net/projects/download-lib/">.Net Download Library</a> yesterday, I came across the need to add and retrieve items from a <a href="http://msdn.microsoft.com/en-us/library/system.collections.hashtable%28VS.71%29.aspx">HashTable</a> of a fixed type. After asking at MSDN forums, someone suggested creating for example a StringHashTable, which then contains a number of Shadow methods that ctype a parameter of the type String to Object, and then pass it along to the corresponding native method of the base class. I extended a little on this by creating a general type defined HashTable extension class: TypeHashTable. This class is pretty identical to the String variant, but I added one variable type (see the code below), making it usable for whatever type you need it, without any manual converting. I&#8217;m probably not implementing this in the .Net Download library, since the conversion there only requires a one line function, and the philosophy is to keep it as simple and small as possible. Anyway, I&#8217;ve <a href="http://code.bn2vs.com/viewtopic.php?t=164">put this class on my forums</a> so that anyone can use it. It&#8217;s also a neat example of the usage of variable type definitions IMHO <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="codecolorer-container vbnet default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="vbnet codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Class</span> TypeHashTable<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Of</span> ItemType<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">Inherits</span> Hashtable<br />
<br />
&nbsp; &nbsp; <span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Shadows</span> <span style="color: #0600FF;">Sub</span> Add<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> key <span style="color: #FF8000;">As</span> ItemType, <span style="color: #FF8000;">ByVal</span> value <span style="color: #FF8000;">As</span> ItemType<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>key, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span>, <span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>value, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span><br />
<br />
&nbsp; &nbsp; <span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Shadows</span> <span style="color: #0600FF;">Function</span> Contains<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> key <span style="color: #FF8000;">As</span> ItemType<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Boolean</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Return</span> <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">Contains</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>key, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span><br />
<br />
&nbsp; &nbsp; <span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Shadows</span> <span style="color: #0600FF;">Function</span> ContainsKey<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> key <span style="color: #FF8000;">As</span> ItemType<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Boolean</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Return</span> <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">ContainsKey</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>key, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span><br />
<br />
&nbsp; &nbsp; <span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Shadows</span> <span style="color: #0600FF;">Function</span> ContainsValue<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> value <span style="color: #FF8000;">As</span> ItemType<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Boolean</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Return</span> <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">ContainsValue</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>value, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span><br />
<br />
&nbsp; &nbsp; <span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Shadows</span> <span style="color: #0600FF;">Sub</span> Remove<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> key <span style="color: #FF8000;">As</span> ItemType<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">MyBase</span>.<span style="color: #0000FF;">Remove</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">CType</span><span style="color: #000000;">&#40;</span>key, System.<span style="color: #FF0000;">Object</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span><br />
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Class</span></div></div>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F&amp;title=Class+TypeHashTable" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F&amp;title=Class+TypeHashTable" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F&amp;title=Class+TypeHashTable" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F&amp;headline=Class+TypeHashTable" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Class+TypeHashTable&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Class+TypeHashTable&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Class+TypeHashTable&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Class+TypeHashTable&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Class+TypeHashTable&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F&amp;title=Class+TypeHashTable&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F22%2Fclass-typehashtable%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/09/22/class-typehashtable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event-based Asynchronous Pattern</title>
		<link>http://blog.bn2vs.com/2009/09/04/event-based-asynchronous-pattern/</link>
		<comments>http://blog.bn2vs.com/2009/09/04/event-based-asynchronous-pattern/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 13:55:23 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Asynchronous]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=382</guid>
		<description><![CDATA[While working on .Net download library, I realized I still didn&#8217;t know how to fire events from the background threads onto the main thread (meaning the thread that started the download by calling Start). I posted query on how to do this in vb.net on several forums, and got some helpful responses at MSDN. Apparently, [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/09/04/event-based-asynchronous-pattern/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>While working on .Net download library, I realized I still didn&#8217;t know how to fire events from the background threads onto the main thread (meaning the thread that started the download by calling Start). I posted query on how to do this in vb.net on several forums, and got some helpful responses at MSDN. Apparently, the thing I&#8217;ve been searching for is called the <a href="http://msdn.microsoft.com/en-us/library/hkasytyf%28VS.80%29.aspx" target="_blank"><em>Event-based Asynchronous Pattern</em></a>, which is a general pattern for asynchronous operation&#8217;s with events. I have done some familiarization with it by doing the entire <a href="http://msdn.microsoft.com/en-us/library/bz33kx67%28VS.80%29.aspx" target="_blank">walk-through</a>, and I also started implementing it into the Download class. I&#8217;ll probably commit my current code this weekend, hopefully with working cross thread events <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F&amp;title=Event-based+Asynchronous+Pattern" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F&amp;title=Event-based+Asynchronous+Pattern" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F&amp;title=Event-based+Asynchronous+Pattern" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F&amp;headline=Event-based+Asynchronous+Pattern" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Event-based+Asynchronous+Pattern&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Event-based+Asynchronous+Pattern&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Event-based+Asynchronous+Pattern&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Event-based+Asynchronous+Pattern&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Event-based+Asynchronous+Pattern&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F&amp;title=Event-based+Asynchronous+Pattern&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F09%2F04%2Fevent-based-asynchronous-pattern%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/09/04/event-based-asynchronous-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net C# to VB + refactoring</title>
		<link>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/</link>
		<comments>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 23:20:03 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Code horror]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=353</guid>
		<description><![CDATA[While translating some of the C# code of MyDownloader to VB.Net for the .Net download library, I&#8217;ve already come across quite some awkward code. IMHO, the underneath example could go into the code horrors section of The Code Project. &#160; &#160; &#160; &#160; private void RestartDownload&#40;&#41; &#160; &#160; &#160; &#160; &#123; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>While translating some of the C# code of <a href="http://www.codeproject.com/KB/IP/MyDownloader.aspx" target="_blank">MyDownloader</a> to VB.Net for the .Net download library, I&#8217;ve already come across quite some awkward code. IMHO, the underneath example could go into the <a href="http://www.codeproject.com/Feature/CodingHorrors.aspx" target="_blank">code horrors section</a> of <a href="http://www.codeproject.com" target="_blank">The Code Project</a>.</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> RestartDownload<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #6666cc; font-weight: bold;">int</span> currentTry <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stream stream<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RemoteFileInfo newInfo<span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">Preparing</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; currentTry<span style="color: #008000;">++;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo <span style="color: #008000;">=</span> defaultDownloadProvider<span style="color: #008000;">.</span><span style="color: #0000FF;">GetFileInfo</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ResourceLocation</span>, <span style="color: #0600FF; font-weight: bold;">out</span> stream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> ex<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>currentTry <span style="color: #008000;">&lt;</span> Settings<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Default</span><span style="color: #008000;">.</span><span style="color: #0000FF;">MaxRetries</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">WaitingForReconnect</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span>TimeSpan<span style="color: #008000;">.</span><span style="color: #0000FF;">FromSeconds</span><span style="color: #008000;">&#40;</span>Settings<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Default</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RetryDelay</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">Prepared</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">// check if the file changed on the server</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">AcceptRanges</span> <span style="color: #008000;">||</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">LastModified</span> <span style="color: #008000;">&gt;</span> RemoteFileInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">LastModified</span> <span style="color: #008000;">||</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">FileSize</span> <span style="color: #008000;">!=</span> RemoteFileInfo<span style="color: #008000;">.</span><span style="color: #0000FF;">FileSize</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">remoteFileInfo</span> <span style="color: #008000;">=</span> newInfo<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; StartSegments<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">RequestedSegments</span>, stream<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>stream <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stream<span style="color: #008000;">.</span><span style="color: #0000FF;">Dispose</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RunSegments<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>ThreadAbortException<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">throw</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastError <span style="color: #008000;">=</span> ex<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetState<span style="color: #008000;">&#40;</span>DownloaderState<span style="color: #008000;">.</span><span style="color: #0000FF;">EndedWithError</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>Why? It uses breaks and returns in the middle of the code, like if C# is some lame generic language without selection structures. The use of the try-catch bloks also seems odd. Also have a look at the condition for the do while loop &#8211; lol. The only thing missing are a few GoTo statements, which would have convinced me to print this out and torture fellow geeks with <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I started off translating this literally, but got so annoyed by the bad coding practice I decided to attempt to rewrite it. I say &#8216;attempt&#8217;, cause code written like that is not easy to understand, esp for people who are used to &#8216;decent&#8217; structured code. I splitted the code into 2 subs instead of one, removed all breaks, returns, the insane do while true and put only the required code in try catches.</p>
<div class="codecolorer-container vbnet default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="vbnet codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> RestartDownload<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> tryNr <span style="color: #FF8000;">As</span> Int32 <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> stream <span style="color: #FF8000;">As</span> Stream<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> newInfo <span style="color: #FF8000;">As</span> RemoteFileInfo<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Dim</span> reachedMaxTries, hasError <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Boolean</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_lastError <span style="color: #008000;">=</span> <span style="color: #FF8000;">Nothing</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">Preparing</span><span style="color: #000000;">&#41;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newInfo <span style="color: #008000;">=</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">ProtocolProvider</span>.<span style="color: #0000FF;">GetFileInfo</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileLocation</span>, stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> Exception<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_lastError <span style="color: #008000;">=</span> ex<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hasError <span style="color: #008000;">=</span> m_lastError <span style="color: #FF8000;">IsNot</span> <span style="color: #FF8000;">Nothing</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tryNr <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reachedMaxTries <span style="color: #008000;">=</span> tryNr &gt;<span style="color: #008000;">=</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Settings</span>.<span style="color: #0000FF;">MaxRetries</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #804040;">And</span> <span style="color: #804040;">Not</span> reachedMaxTries <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">WaitingForReconnect</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.<span style="color: #0000FF;">Sleep</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Settings</span>.<span style="color: #0000FF;">RetryDelay</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">Loop</span> Until <span style="color: #804040;">Not</span> hasError Or reachedMaxTries<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> hasError <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">EndedWithError</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">SetState</span><span style="color: #000000;">&#40;</span>DownloadState.<span style="color: #0000FF;">Prepared</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">RestartSegments</span><span style="color: #000000;">&#40;</span>newInfo, stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> RestartSegments<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> newInfo <span style="color: #FF8000;">As</span> RemoteFileInfo, <span style="color: #FF8000;">ByVal</span> stream <span style="color: #FF8000;">As</span> Stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> newInfo.<span style="color: #0000FF;">AcceptRanges</span> Or newInfo.<span style="color: #0000FF;">ModifyDateTime</span> &gt; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileInfo</span>.<span style="color: #0000FF;">ModifyDateTime</span> Or newInfo.<span style="color: #0000FF;">FileSize</span> &lt;&gt; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">FileInfo</span>.<span style="color: #0000FF;">FileSize</span> <span style="color: #FF8000;">Then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_fileInfo <span style="color: #008000;">=</span> newInfo<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">AttemptToStartSegements</span><span style="color: #000000;">&#40;</span>stream<span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">If</span> stream <span style="color: #FF8000;">IsNot</span> <span style="color: #FF8000;">Nothing</span> <span style="color: #FF8000;">Then</span> stream.<span style="color: #0000FF;">Dispose</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">RunSegments</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></div></div>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;headline=.Net+C%23+to+VB+%2B+refactoring" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=.Net+C%23+to+VB+%2B+refactoring&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=.Net+C%23+to+VB+%2B+refactoring&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F&amp;title=.Net+C%23+to+VB+%2B+refactoring&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F28%2Fnet-c-to-vb-refactoring%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/28/net-c-to-vb-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DownloadManager class</title>
		<link>http://blog.bn2vs.com/2009/08/27/downloadmanager-class/</link>
		<comments>http://blog.bn2vs.com/2009/08/27/downloadmanager-class/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 18:45:57 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=351</guid>
		<description><![CDATA[Today I again did some work on my .Net download library project. I added some stuff to the main class, Download, and also created the base of the DownloadManager class. This class will allow you to work with multiple downloads at once, by putting them in a list, and providing a variety of methods and [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/27/downloadmanager-class/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Today I again did some work on my <a href="http://sourceforge.net/projects/download-lib/" target="_blank">.Net download library</a> project. I <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/DownloadLib/Downloader/Classes/Download.vb?r1=6&amp;r2=7" target="_blank">added some stuff</a> to the main class, <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/DownloadLib/Downloader/Classes/Download.vb?view=log" target="_blank">Download</a>, and also created the base of the <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/DownloadLib/Downloader/Classes/DownloadManager.vb?revision=7&amp;view=markup" target="_blank">DownloadManager</a> class. This class will allow you to work with multiple downloads at once, by putting them in a list, and providing a variety of methods and properties that enable you to gather info or work with all or selections of the downloads.</p>
<p>I&#8217;m getting close to actually be able to start debugging the code, something which can take up quite some time with so much untested code.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F&amp;title=DownloadManager+class" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F&amp;title=DownloadManager+class" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F&amp;title=DownloadManager+class" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F&amp;headline=DownloadManager+class" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=DownloadManager+class&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=DownloadManager+class&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=DownloadManager+class&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=DownloadManager+class&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=DownloadManager+class&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F&amp;title=DownloadManager+class&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F27%2Fdownloadmanager-class%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/27/downloadmanager-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net download library taking form</title>
		<link>http://blog.bn2vs.com/2009/08/26/net-download-library-taking-form/</link>
		<comments>http://blog.bn2vs.com/2009/08/26/net-download-library-taking-form/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 17:04:59 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[VB]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=349</guid>
		<description><![CDATA[Today did quite some work on .Net download library, the successor to my current FileDownloader class. I started off with finishing the protocol provider code (see revision 4), and then went on adding a lot of the still missing stuff to the Download class (see revision 5), which now counts almost 800 lines of code. [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/26/net-download-library-taking-form/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Today did quite some work on .Net download library, the successor to my current FileDownloader class.</p>
<p>I started off with finishing the protocol provider code (<a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib?view=rev&amp;revision=4" target="_blank">see revision 4</a>), and then went on adding a lot of the still missing stuff to the <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/DownloadLib/Downloader/Classes/Download.vb?view=markup&amp;pathrev=5" target="_blank">Download</a> class (<a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib?view=rev&amp;revision=5" target="_blank">see revision 5</a>), which now counts almost 800 lines of code. Most changes I made are pretty much C# to VB.Net translation from <a href="http://www.codeproject.com/KB/IP/MyDownloader.aspx" target="_blank">MyDownloader</a>, one of the projects I&#8217;m basing this library upon. Doing this translating also comes with the challenges of leaving out code that&#8217;s not needed (for example a hook system for protocol providers), holding into account all the name changes I&#8217;ve made, and at some points revising the logic layout of the code, since I don&#8217;t agree with the original design. I also had some great fun with working with SyncLock statements and interfaces.</p>
<p>Although the project is still far from a first release, the basic structure is taking form, and I&#8217;m beginning to see where and how future features will need to be added <img src='http://blog.bn2vs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F&amp;title=.Net+download+library+taking+form" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F&amp;title=.Net+download+library+taking+form" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F&amp;title=.Net+download+library+taking+form" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F&amp;headline=.Net+download+library+taking+form" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=.Net+download+library+taking+form&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=.Net+download+library+taking+form&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=.Net+download+library+taking+form&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=.Net+download+library+taking+form&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=.Net+download+library+taking+form&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F&amp;title=.Net+download+library+taking+form&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F26%2Fnet-download-library-taking-form%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/26/net-download-library-taking-form/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Closing Zend and opening Visual Studio</title>
		<link>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/</link>
		<comments>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 01:37:23 +0000</pubDate>
		<dc:creator>Jeroen De Dauw</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Class lirary]]></category>
		<category><![CDATA[DownloadLib]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[The Code Project]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Zend Studio]]></category>

		<guid isPermaLink="false">http://blog.bn2vs.com/?p=334</guid>
		<description><![CDATA[Now the Google Summer of Code coding period has finished, I can divide my attention between multiple projects again. Since I&#8217;ve been doing PHP and JavaScript only for over 2 months now, I&#8217;m starting off with taking a PHP-break. This means I won&#8217;t do any development of mayor new features for Maps or Semantic Maps, [...]]]></description>
			<content:encoded><![CDATA[<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' /></div><p>Now the <a href="http://blog.bn2vs.com/2009/04/26/google-summer-of-code-2009/" target="_blank">Google Summer of Code</a> coding period has finished, I can divide my attention between multiple projects again. Since I&#8217;ve been doing PHP and JavaScript only for over 2 months now, I&#8217;m starting off with taking a PHP-break. This means I won&#8217;t do any development of mayor new features for <a href="http://www.mediawiki.org/wiki/Extension:Maps#Description" target="_blank">Maps</a> or <a href="http://www.mediawiki.org/wiki/Extension:Semantic_Maps#Description" target="_blank">Semantic Maps</a>, and definitely won&#8217;t work on any other PHP project. Of course I&#8217;ll still ensure bugs get fixed for my mapping extensions, and help people out with code when needed, but that&#8217;s about it. So basically I&#8217;m closing my Zend Studio, which has become one of my most used applications in the last months, and starting my Visual Studio again. Now I think of it, this is really awkward. I used to start my VS practically every time I booted my computer for over a year, and then only opened it a handful of times in a 2 month period.</p>
<p>So, what am I going to work on now? One of my last projects before I started GSoC was a <a href="http://code.bn2vs.com/viewtopic.php?t=150" target="_blank">VB.Net background file downloader</a>, of which I released <a href="http://www.codeproject.com/KB/vb/FileDownloader.aspx" target="_blank">an article on The Code Project</a>, and later on created <a href="http://www.codeproject.com/KB/cs/BackgroundFileDownloader.aspx" target="_blank">a C# version</a>. I got quite some positive feedback on this project by people, although it was initially created with the sole purpose of helping that needed a simple downloader someone out, to improve my own skills, and to demonstrate how to create a simple to implement downloader. I&#8217;m now continuing this project, by rewriting it from scratch, to both add some mayor new features, and mess around with some multi-threading stuff I&#8217;ve been wanting to try out for months now.</p>
<p>The mayor new features that will be added are simultaneous downloads (the current classes only support one download at a time), segmented downloads (woot!), download priorities and bandwidth limitation options. This will require a nice OOP approach, with some more advanced multi-threading. I&#8217;m basing part of my code on <a href="http://www.codeproject.com/KB/IP/MyDownloader.aspx" target="_blank">MyDownloader</a>, an extremely nice C# downloader, which has quite some more functionality then what I&#8217;m doing. It&#8217;s more extensive then required for most people though, and not all that easy to implement. I also don&#8217;t really agree with some naming choices, and it lacks both code docs for devs that want to modify it, and devs that want to implement it. So clearly, I&#8217;ll put a lot of effort in keeping the new project as small and to-the-point as possible, and pay attention to easy of implementation, and usability. Another obvious difference is that this project is in VB.Net and not C#.Net. This has more advantages then disadvantages IMHO. If the project is compiled to a .dll or is used in a multi-project solution, it simply doesn&#8217;t matter what language it uses. A lot of casual programmers don&#8217;t know how to handle either, and the majority of these uses VB.Net, and not C#. And the ones that do know C# are more likely to know VB.Net then the other way around.</p>
<p>I&#8217;ve created a project on <a href="http://sourceforge.net" target="_blank">SourceForge</a> to host the code, and be able to commit to <a href="http://download-lib.svn.sourceforge.net/viewvc/download-lib/" target="_blank">the project&#8217;s SVN</a>. Since the project now contains multiple classes, I renamed it to <a href="https://sourceforge.net/projects/download-lib/" target="_blank">.Net DownloadLib</a>.</p>
<p>After that project I&#8217;m planing to put some real effort into my mapping extension for MediaWiki again, and possibly to have a look at Python and Ruby. When school starts again, somewhere half way through September, some new project opportunities will probably arise for me, but I guess I&#8217;ll see that then. I&#8217;m also looking forward to &#8216;learning to program&#8217; at school, which is destined to give me some great laughs. Luckily for me I&#8217;ll have to learn C++ at university, so I won&#8217;t be totally bored with it. I hope they don&#8217;t drive the low-level aspects of the language to far, since that&#8217;s pretty useless in today&#8217;s world IMHO.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;headline=Closing+Zend+and+opening+Visual+Studio" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Closing+Zend+and+opening+Visual+Studio&amp;u=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Closing+Zend+and+opening+Visual+Studio&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F&amp;title=Closing+Zend+and+opening+Visual+Studio&amp;summary=&amp;source=" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fblog.bn2vs.com%2F2009%2F08%2F21%2Fclosing-zend-and-opening-visual-studio%2F" ><img class="lightsocial_img" src="http://blog.bn2vs.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div>]]></content:encoded>
			<wfw:commentRss>http://blog.bn2vs.com/2009/08/21/closing-zend-and-opening-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
