<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://cs.axvius.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Parker&amp;#39;s DevEd Blog</title><link>http://cs.axvius.com/blogs/parker/default.aspx</link><description>Musings on all software development technologies, and education involving computer science and fraud investigation</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Adding WPF/XAML support to a Class Library</title><link>http://cs.axvius.com/blogs/parker/archive/2008/07/01/adding-wpf-xaml-support-to-a-class-library.aspx</link><pubDate>Tue, 01 Jul 2008 14:52:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:138</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=138</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2008/07/01/adding-wpf-xaml-support-to-a-class-library.aspx#comments</comments><description>&lt;p&gt;Add this &amp;lt;Import Project=&amp;quot;$(MSBuildBinPath)\Microsoft.WinFX.targets&amp;quot; /&amp;gt; to the .csproj file.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.msdn.microsoft.com/en-US/wpf/thread/2f755d30-bd8c-4f9b-b36a-9cb56bea15cd/"&gt;http://forums.msdn.microsoft.com/en-US/wpf/thread/2f755d30-bd8c-4f9b-b36a-9cb56bea15cd/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=138" width="1" height="1"&gt;</description></item><item><title>NDoc 2.0 Installer</title><link>http://cs.axvius.com/blogs/parker/archive/2008/06/26/ndoc-2-0-installer.aspx</link><pubDate>Thu, 26 Jun 2008 16:34:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:137</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=137</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2008/06/26/ndoc-2-0-installer.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=137" width="1" height="1"&gt;</description><enclosure url="http://cs.axvius.com/blogs/parker/attachment/137.ashx" length="1925199" type="application/x-zip-compressed" /><category domain="http://cs.axvius.com/blogs/parker/archive/tags/.NET+Framework+2.0/default.aspx">.NET Framework 2.0</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/NDoc/default.aspx">NDoc</category></item><item><title>Adding a .NET Assembly to the GAC</title><link>http://cs.axvius.com/blogs/parker/archive/2008/04/15/adding-a-net-assembly-to-the-gac.aspx</link><pubDate>Tue, 15 Apr 2008 22:47:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:127</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=127</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2008/04/15/adding-a-net-assembly-to-the-gac.aspx#comments</comments><description>&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Create .snk file&lt;/div&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;VS Command Prompt&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;sn -k [filename].snk&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;li&gt;
&lt;div&gt;Copy .snk file into VS project&lt;/div&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Include in project&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Project -&amp;gt; Properties -&amp;gt; Signing -&amp;gt; Sign the assembly -&amp;gt; Select the .snk file&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;li&gt;
&lt;div&gt;Add assembly to GAC through command-line or Installer&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=127" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/GAC/default.aspx">GAC</category></item><item><title>Windows Impersonation</title><link>http://cs.axvius.com/blogs/parker/archive/2008/03/31/windows-impersonation.aspx</link><pubDate>Mon, 31 Mar 2008 13:03:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:124</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=124</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2008/03/31/windows-impersonation.aspx#comments</comments><description>&lt;p&gt;&lt;font size="2"&gt;[&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;DllImport&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;advapi32.dll&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, SetLastError = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;)]&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;extern&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; LogonUser(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; lpszUsername, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; lpszDomain, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; lpszPassword, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; dwLogonType, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; dwLogonProvider, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;out&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;IntPtr&lt;/font&gt;&lt;font size="2"&gt; phToken);&lt;br /&gt;[&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;DllImport&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;kernel32.dll&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, SetLastError = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;)]&lt;br /&gt;[&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt;: &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;MarshalAs&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;UnmanagedType&lt;/font&gt;&lt;font size="2"&gt;.Bool)]&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;extern&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; CloseHandle(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;IntPtr&lt;/font&gt;&lt;font size="2"&gt; hObject);&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;enum&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;LogonType&lt;/font&gt;&lt;font size="2"&gt; { Interactive = 2, Network = 3, Batch = 4, Service = 5, Unlock = 7, NetworkClearText = 8, NewCredentials = 9 }&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;WindowsImpersonationContext&lt;/font&gt;&lt;font size="2"&gt; Impersonate(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; domain, &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; user, &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt; password, &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;LogonType&lt;/font&gt;&lt;font size="2"&gt; type) {&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr&lt;/font&gt;&lt;font size="2"&gt; userToken = &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;IntPtr&lt;/font&gt;&lt;font size="2"&gt;.Zero;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/font&gt;&lt;font size="2"&gt;(!LogonUser(user, domain, password, (&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt;)type, 0, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;out&lt;/font&gt;&lt;font size="2"&gt; userToken))&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Win32Exception&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Marshal&lt;/font&gt;&lt;font size="2"&gt;.GetLastWin32Error());&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;WindowsIdentity&lt;/font&gt;&lt;font size="2"&gt;.Impersonate(userToken);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;finally&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(userToken);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Main(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;WindowsImpersonationContext&lt;/font&gt;&lt;font size="2"&gt; wic = Impersonate(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;DOMAIN&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;User.Name&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Password&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;LogonType&lt;/font&gt;&lt;font size="2"&gt;.Interactive)) {&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do Something as new user&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wic.Undo();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; ex) {&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;/font&gt;&lt;font size="2"&gt;.Write(ex.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;finally&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console&lt;/font&gt;&lt;font size="2"&gt;.Read();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=124" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_+2.0/default.aspx">C# 2.0</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Windows+Impersonation/default.aspx">Windows Impersonation</category></item><item><title>Exchange Server 2007 Sync Issue 0X80190193</title><link>http://cs.axvius.com/blogs/parker/archive/2008/02/27/exchange-server-2007-sync-issue-0x80190193.aspx</link><pubDate>Wed, 27 Feb 2008 04:21:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:113</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=113</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2008/02/27/exchange-server-2007-sync-issue-0x80190193.aspx#comments</comments><description>&lt;p&gt;There are a couple of things I did to resolve this issue for me:&lt;/p&gt;
&lt;p&gt;1. Exchange Management Console -&amp;gt; Organization Configuration -&amp;gt; Mailbox -&amp;gt; Offline Address Book Tab, make sure this exists and the distribution is set to Web-based and Public Folders.&lt;/p&gt;
&lt;p&gt;2. Exchange Management Console -&amp;gt; Server Configuration -&amp;gt; Mailbox -&amp;gt; Database Management Tab -&amp;gt; Mailbox Database -&amp;gt; Properties -&amp;gt; Client Settings tab, verify the OAB is text box is filled in, if not click browse and select your OAB.&lt;/p&gt;
&lt;p&gt;3. IIS -&amp;gt; OAB Virtual Directory -&amp;gt; SSL Settings -&amp;gt; DO NOT REQUIRE SLL -&amp;gt; Restart IIS&lt;/p&gt;
&lt;p&gt;4. Restart Outlook 2007/2003.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Reference: &lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1398272&amp;amp;SiteID=17"&gt;http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1398272&amp;amp;SiteID=17&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=113" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Exchange+Server+2007/default.aspx">Exchange Server 2007</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Sync+Issue+0X80190193/default.aspx">Sync Issue 0X80190193</category></item><item><title>Final RollingList&lt;T&gt;</title><link>http://cs.axvius.com/blogs/parker/archive/2007/11/26/final-rollinglist-lt-t-gt.aspx</link><pubDate>Mon, 26 Nov 2007 20:11:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:107</guid><dc:creator>Administrator</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=107</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/11/26/final-rollinglist-lt-t-gt.aspx#comments</comments><description>&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;RollingList&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt; : &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;ICollection&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#region&lt;/font&gt;&lt;font size="2"&gt; Private Fields&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; _capacity;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;LinkedList&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt; _linkedList;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/font&gt;&lt;font size="2"&gt; Constructors&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size="2"&gt; RollingList(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; capacity) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _capacity = capacity;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _linkedList = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;LinkedList&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#region&lt;/font&gt;&lt;font size="2"&gt; Public Methods&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;override&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; ToString() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;StringBuilder&lt;/font&gt;&lt;font size="2"&gt; sb = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;StringBuilder&lt;/font&gt;&lt;font size="2"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt;(T item &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.AppendLine(item.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; sb.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#endregion&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/font&gt;&lt;font size="2"&gt; ICollection&amp;lt;T&amp;gt; Members&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Add(T item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _linkedList.AddFirst(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;LinkedListNode&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt;(item));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt;(_linkedList.Count &amp;gt; _capacity)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _linkedList.RemoveLast();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Clear() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _linkedList.Clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; Contains(T item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _linkedList.Contains(item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; CopyTo(T[] array, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; arrayIndex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _linkedList.CopyTo(array, arrayIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; Count {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _linkedList.Count; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; IsReadOnly {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;throw&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;The method or operation is not implemented.&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; Remove(T item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _linkedList.Remove(item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#endregion&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/font&gt;&lt;font size="2"&gt; IEnumerable&amp;lt;T&amp;gt; Members&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;IEnumerator&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt; GetEnumerator() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _linkedList.GetEnumerator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#endregion&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/font&gt;&lt;font size="2"&gt; IEnumerable Members&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;IEnumerator&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;IEnumerable&lt;/font&gt;&lt;font size="2"&gt;.GetEnumerator() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _linkedList.GetEnumerator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;#endregion&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=107" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/RollingList/default.aspx">RollingList</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>C#: Enumerate Serial Ports</title><link>http://cs.axvius.com/blogs/parker/archive/2007/11/26/c-enumerate-serial-ports.aspx</link><pubDate>Mon, 26 Nov 2007 20:06:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:106</guid><dc:creator>Administrator</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=106</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/11/26/c-enumerate-serial-ports.aspx#comments</comments><description>&lt;font color="#2b91af" size="2"&gt;
&lt;p&gt;ManagementObjectSearcher&lt;/font&gt;&lt;font size="2"&gt; searcher = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;ManagementObjectSearcher&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;SELECT * FROM Win32_SerialPort&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;foreach&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;ManagementObject&lt;/font&gt;&lt;font size="2"&gt; obj &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;in&lt;/font&gt;&lt;font size="2"&gt; searcher.Get()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Console&lt;/font&gt;&lt;font size="2"&gt;.WriteLine(obj[&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;DeviceID&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;].ToString());&lt;br /&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=106" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Hardware/default.aspx">Hardware</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/ManagementObjectSearcher/default.aspx">ManagementObjectSearcher</category></item><item><title>Serialize Static Fields</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/10/serialize-static-fields.aspx</link><pubDate>Wed, 10 Oct 2007 18:14:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:92</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=92</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/10/serialize-static-fields.aspx#comments</comments><description>&lt;p&gt;There a lot of things to think about when it comes to serializing static fields, how it will be stored, how it will be reinstated, duplication of data, and design. Although, it usually is&amp;nbsp;a sign of bad design if you are trying to serialize static fields, there are some cases in which you need to. In which cases, some work arounds are way to tedious, for what you are actually trying to do, especially some sort of templating. Well here&amp;#39;s one way you can do it.&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Desk&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; _manufacturer = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;Hard Furniture - {Id}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; _serial = &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;HFSTYLE{Id}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; _id;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Properties to serialize static fields&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; Manufacturer {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _manufacturer; }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;font size="2"&gt; { _manufacturer = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;value&lt;/font&gt;&lt;font size="2"&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; Serial {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _serial; }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;font size="2"&gt; { _serial = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;value&lt;/font&gt;&lt;font size="2"&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Properties&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; Id {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; _id; }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/font&gt;&lt;font size="2"&gt; { _id = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;value&lt;/font&gt;&lt;font size="2"&gt;;&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetupLocals();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; SetupLocals() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#008000" size="2"&gt;// Assign local based on static&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; someLocal = Manufacturer.Replace(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;{Id}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, Id.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; someLocal2 = Serial.Replace(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;{Id}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, Id.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Constructors&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/font&gt;&lt;font size="2"&gt; Stop() { }&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size="2"&gt; Stop(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;int&lt;/font&gt;&lt;font size="2"&gt; id) {&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Id = _id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=92" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/.NET+Framework+2.0/default.aspx">.NET Framework 2.0</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Serialization/default.aspx">Serialization</category></item><item><title>Extension Methods (will) be Awesome!</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/10/extension-methods-will-be-awesome.aspx</link><pubDate>Wed, 10 Oct 2007 12:44:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:91</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=91</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/10/extension-methods-will-be-awesome.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=91" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Extension+Methods/default.aspx">Extension Methods</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category></item><item><title>C#: Resolving Ambiguous References using "using ="</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/08/c-resolving-ambiguous-references-using-quot-using-quot.aspx</link><pubDate>Mon, 08 Oct 2007 21:45:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:90</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=90</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/08/c-resolving-ambiguous-references-using-quot-using-quot.aspx#comments</comments><description>Have you ever been developing a Windows Forms application, and then somewhere in the form you want to create a new Timer (System.Threading). When you do this you run into a ambiguous reference problem because System.Windows.Forms already contains definition for a Timer. So, usually you just end up prefixing wherever you want a Threading Timer by adding the &amp;quot;System.Threading&amp;quot; text in front of it. Although, this does work it creates harder to read code, there is a solution.&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; t = System.Threading;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;tTimer&lt;/font&gt;&lt;font size="2"&gt; = System.Threading.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timer&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;namespace&lt;/font&gt;&lt;font size="2"&gt; AmbiguousReferences {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;partial&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Form1&lt;/font&gt;&lt;font size="2"&gt; : &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Form&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; Form1() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Form1_Load(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; sender, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;EventArgs&lt;/font&gt;&lt;font size="2"&gt; e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timer&lt;/font&gt;&lt;font size="2"&gt; winFormsTimer = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timer&lt;/font&gt;&lt;font size="2"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timer&lt;/font&gt;&lt;font size="2"&gt; threadTimer1 = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; System.Threading.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timer&lt;/font&gt;&lt;font size="2"&gt;(ShowMessage, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Timer 1&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, 500, t.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timeout&lt;/font&gt;&lt;font size="2"&gt;.Infinite);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;tTimer&lt;/font&gt;&lt;font size="2"&gt; threadTimer2 = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;tTimer&lt;/font&gt;&lt;font size="2"&gt;(ShowMessage, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;Timer 2&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, 500, t.&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Timeout&lt;/font&gt;&lt;font size="2"&gt;.Infinite);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; ShowMessage(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; msg) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Invoke((&lt;/font&gt;&lt;font color="#008080" size="2"&gt;MethodInvoker&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;delegate&lt;/font&gt;&lt;font size="2"&gt;() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MessageBox&lt;/font&gt;&lt;font size="2"&gt;.Show(msg.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=90" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Ambiguous+References/default.aspx">Ambiguous References</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/using/default.aspx">using</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/using+_3D00_/default.aspx">using =</category></item><item><title>C#: is vs. as</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/08/c-is-vs-as.aspx</link><pubDate>Mon, 08 Oct 2007 21:40:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:89</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=89</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/08/c-is-vs-as.aspx#comments</comments><description>&lt;p&gt;I have seen a lot of code lately using &amp;quot;is&amp;quot; instead of &amp;quot;as&amp;quot;. I just want to get the word out there that it is much better to use &amp;quot;as&amp;quot; as it is more efficient. For example, here&amp;#39;s a sample code post using &amp;quot;is&amp;quot;:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;if&lt;/font&gt;&lt;font size="2"&gt; (someType &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;is&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Point&lt;/font&gt;&lt;font size="2"&gt;) {&lt;br /&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point&lt;/font&gt;&lt;font size="2"&gt; myPoint = someType &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;as&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Point&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use myPoint as needed&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;This post actually casts the object stored in someType twice, to see if it is indeed a Point. Now, look at the following post using &amp;quot;as&amp;quot; which is more efficient. This only casts the object stored in someType once.&lt;/p&gt;&lt;font color="#008080" size="2"&gt;
&lt;p&gt;Point&lt;/font&gt;&lt;font size="2"&gt; myPoint = someType &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;as&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Point&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (myPoint != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;) {&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use myPoint as needed&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;}&lt;/p&gt;&lt;/font&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=89" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/is/default.aspx">is</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/as/default.aspx">as</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>WPF Icon as ImageSource</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/05/wpf-icon-as-imagesource.aspx</link><pubDate>Fri, 05 Oct 2007 16:41:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:88</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=88</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/05/wpf-icon-as-imagesource.aspx#comments</comments><description>&lt;p&gt;Assigning the Icon of a window in WPF, should seem rather simpllistic and straight forward. You should be able to simply grab an icon, say the question mark from SystemIcons.Question and practically just assign it to the Window&amp;#39;s Icon property. Oh, but of course not! The Icon property is implemented as a ImageSource, now you have hit a war battle, trying to figure out how to convert this damn Icon into an ImageSource. Well, here&amp;#39;s how you do it...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://infosysblogs.com/microsoft/2007/04/wpf_assigning_icon_to_image_co.html"&gt;http://infosysblogs.com/microsoft/2007/04/wpf_assigning_icon_to_image_co.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=88" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/.NET+Framework+2.0/default.aspx">.NET Framework 2.0</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/WPF/default.aspx">WPF</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/ImageSource/default.aspx">ImageSource</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Icon/default.aspx">Icon</category></item><item><title>WCF Windows Services the Right Way!</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/04/wcf-windows-services-the-right-way.aspx</link><pubDate>Thu, 04 Oct 2007 15:45:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:87</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=87</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/04/wcf-windows-services-the-right-way.aspx#comments</comments><description>&lt;p&gt;As you can see from above this post is about using WCF in Windows Services. This means anything I talk about below will be considered a long running service, as this is the point of Windows Services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Singleton&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Session&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Per Call&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=87" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/SOA/default.aspx">SOA</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Windows+Services/default.aspx">Windows Services</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/WCF/default.aspx">WCF</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Design/default.aspx">Design</category></item><item><title>Finally! Dev machine can run Windows Server 2003</title><link>http://cs.axvius.com/blogs/parker/archive/2007/10/03/finally-dev-machine-can-run-windows-server-2003.aspx</link><pubDate>Thu, 04 Oct 2007 00:20:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:86</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=86</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/10/03/finally-dev-machine-can-run-windows-server-2003.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve finally figured out a way to install Windows Media Player 11 on Windows Server 2003. This has been the only thing holding me back from running Windows Server 2003 on my developer machine.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.msblog.org/index.php/2006/12/17/install-windows-media-player-11-on-windows-server-2003/"&gt;http://www.msblog.org/index.php/2006/12/17/install-windows-media-player-11-on-windows-server-2003/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=86" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Servers/default.aspx">Servers</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Server+2003/default.aspx">Server 2003</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Media+Player+11/default.aspx">Media Player 11</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Programmatically Browsing Web Pages...and Downloading Tabs :-)</title><link>http://cs.axvius.com/blogs/parker/archive/2007/09/26/programmatically-browsing-web-pages-and-downloading-tabs.aspx</link><pubDate>Thu, 27 Sep 2007 04:45:00 GMT</pubDate><guid isPermaLink="false">ec0d81af-1884-4603-a61f-98bdaf6b5ad8:84</guid><dc:creator>Parker.Hillius</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://cs.axvius.com/blogs/parker/rsscomments.aspx?PostID=84</wfw:commentRss><comments>http://cs.axvius.com/blogs/parker/archive/2007/09/26/programmatically-browsing-web-pages-and-downloading-tabs.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve been playing guitar for quite a while and have accumulated quite a few downloaded tabs, but with how accessible they are on the web I usually just end up deleting them and downloading them later. Lately, there&amp;#39;s been a lot of legality issues with tab sites, so some of them have been pretty flaky, a lot are getting shut down from time to time, and then I&amp;#39;m unable to download the good tabs from them. Well, there is one site in particular that I use all the time, I&amp;#39;m not going to mention their name here, as I don&amp;#39;t want their bandwith or servers to get hammered by everyone doing what I&amp;#39;m doing. But I was thinking what if I could make a program that could just go through every tab page,&amp;nbsp;then programmatically click the download button, intercept the download and put it in a directory of my choosing, once done, go on to the next tab.&lt;/p&gt;
&lt;p&gt;Well it has been done, here&amp;#39;s how it works. First on my main form I have a text box a start button, and a web browser control. In the textbox you enter the id number of the tab you would like to start with. (all tabs in this database have an id number and they are incremental, very handy, and lucky) When you click the start button, we first browse to the main tab page, with something like this:&lt;br /&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; url = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;.Format(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;http://[site]/tablature.php?id={0}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, id.ToString());&lt;br /&gt;webBrowser1.Navigate(url);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Then I kick off a timer to check every 500 ms, if the webBrowser has completed loading or not, once it has we kill the check timer and then perform the click of a button on the web page to start the download of the tab as so:&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (webBrowser1.ReadyState == &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WebBrowserReadyState&lt;/font&gt;&lt;font size="2"&gt;.Complete) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;// Kill the timer here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ClickDownloadTab();&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;I then had to do some Watch-Debugging, as they did not explicitly name the &amp;quot;Download Tab&amp;quot; button, using the watch window&amp;nbsp;I was able to browse through all input controls and select which one was correct in my case the 3rd index. In order to click the button, we&amp;nbsp;grab the button as a HtmlInputElement and then&amp;nbsp;call the InvokeMember passing in &amp;quot;click&amp;quot; as the event name, this is case-sensitive, and had me fooled, as&amp;nbsp;I first tried &amp;quot;Click&amp;quot; and &amp;quot;Click()&amp;quot;.&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; ClickDownloadTab() {&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/font&gt;&lt;font size="2"&gt; (webBrowser1.Document != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt; &amp;amp;&amp;amp; webBrowser1.Document.GetElementsByTagName(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;input&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;).Count &amp;gt; 3) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watchingFileDownloads = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; webBrowser1.Document.GetElementsByTagName(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;input&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)[3].InvokeMember(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;click&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;nbsp;Now comes the tricky part intercepting the download, so our WebBrowser control (IE) based doesn&amp;#39;t automatically show it&amp;#39;s download dialog box and screw everything. Conveniently enough, the WebBrowser control has a FileDownload event that we can attach to, unfortunately this event gets called for any download, each page request, etc. This is why I have some flags I set, so I can ignore the page requests we don&amp;#39;t want to download. Then I have a downloading flag, so when this gets called again if we&amp;#39;re already downloading the file, it stops the browser from browsing anymore, THIS IS WHAT STOPS THE BROWSER FROM SHOWING THE DOWNLOAD FILE DIALOG, here&amp;#39;s how it&amp;#39;s done:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; _watchingFileDownloads = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; _downloading = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; webBrowser1_FileDownload(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;font size="2"&gt; sender, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;EventArgs&lt;/font&gt;&lt;font size="2"&gt; e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;try&lt;/font&gt;&lt;font size="2"&gt; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (_downloading) webBrowser1.Stop();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (_watchingFileDownloads) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (webBrowser1.Document != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;HtmlElementCollection&lt;/font&gt;&lt;font size="2"&gt; metas = webBrowser1.Document.GetElementsByTagName(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;meta&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (metas.Count &amp;gt;= 2 &amp;amp;&amp;amp; metas[3].OuterHtml.Contains(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;URL&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;_watchingFileDownloads = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _downloading = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; downloadUrl = metas[3].OuterHtml.Substring(43);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;downloadUrl = downloadUrl.Remove(downloadUrl.Length - 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; fileName = downloadUrl.Substring(downloadUrl.LastIndexOf(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&amp;#39;/&amp;#39;&lt;/font&gt;&lt;font size="2"&gt;) + 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Net.&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WebClient&lt;/font&gt;&lt;font size="2"&gt; client = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;WebClient&lt;/font&gt;&lt;font size="2"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.DownloadFile(downloadUrl, &lt;/font&gt;&lt;font color="#a31515" size="2"&gt;@&amp;quot;C:\Powertabs\&amp;quot;&lt;/font&gt;&lt;font size="2"&gt; + fileName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="2"&gt;_downloading = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _curId++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetPowertab(_curId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt; ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;MessageBox&lt;/font&gt;&lt;font size="2"&gt;.Show(ex.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Another thing, I should mention for this particular site, they put the physical URL of the actual Tab file in a meta tag. So, I decided to just parse out the meta tag grab the url and then do a WebClient.DownloadFile(), I then increment my tabId and call GetPowertab again...&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Pretty neat considering i&amp;#39;ve downloaded 4,000 tabs in the last 5/6 hours.&lt;/p&gt;&lt;img src="http://cs.axvius.com/aggbug.aspx?PostID=84" width="1" height="1"&gt;</description><category domain="http://cs.axvius.com/blogs/parker/archive/tags/.NET+Framework+2.0/default.aspx">.NET Framework 2.0</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/Programatically+Browsing+Web+Pages/default.aspx">Programatically Browsing Web Pages</category><category domain="http://cs.axvius.com/blogs/parker/archive/tags/WebBrowser/default.aspx">WebBrowser</category></item></channel></rss>