<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Net on Amit Bahree&#39;s (useless?) insight!</title>
    <link>/tags/net/</link>
    <description>Recent content in Net on Amit Bahree&#39;s (useless?) insight!</description>
    <generator>Hugo -- 0.151.0</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 03 Feb 2009 00:00:00 +0000</lastBuildDate>
    <atom:link href="/tags/net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Exceptions Management (or lack of it)</title>
      <link>/post/2009/02/exceptions-management-or-lack-of-it/</link>
      <pubDate>Tue, 03 Feb 2009 00:00:00 +0000</pubDate>
      <guid>/post/2009/02/exceptions-management-or-lack-of-it/</guid>
      <description>&lt;p&gt;A good example of what not to do.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;

    &lt;img src=&#34;images/Picture1_thumb.png&#34; alt=&#34;Picture 1&#34;/&gt;

&lt;/p&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>A good example of what not to do.</p>
<p><p>

    <img src="images/Picture1_thumb.png" alt="Picture 1"/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>DragMove</title>
      <link>/post/2006/11/dragmove/</link>
      <pubDate>Mon, 13 Nov 2006 00:00:00 +0000</pubDate>
      <guid>/post/2006/11/dragmove/</guid>
      <description>&lt;p&gt;Did you know there is a new method called DragMove which is part of the Window class and allows you to move the window using a mouse? I certainly did not - till now. This is part of .NET 3.0, specifically part of WPF and . Here is an example from the SDK:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#2&#34;&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#3&#34;&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#4&#34;&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#5&#34;&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;6&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#6&#34;&gt;6&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2&#34; id=&#34;7&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#7&#34;&gt;7&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    base.OnMouseLeftButtonDown(e);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    // Begin dragging the window
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    this.DragMove();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>Did you know there is a new method called DragMove which is part of the Window class and allows you to move the window using a mouse? I certainly did not - till now. This is part of .NET 3.0, specifically part of WPF and . Here is an example from the SDK:</p>
<div class="highlight"><div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="1"><a style="outline:none;text-decoration:none;color:inherit" href="#1">1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="2"><a style="outline:none;text-decoration:none;color:inherit" href="#2">2</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="3"><a style="outline:none;text-decoration:none;color:inherit" href="#3">3</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="4"><a style="outline:none;text-decoration:none;color:inherit" href="#4">4</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="5"><a style="outline:none;text-decoration:none;color:inherit" href="#5">5</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="6"><a style="outline:none;text-decoration:none;color:inherit" href="#6">6</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="7"><a style="outline:none;text-decoration:none;color:inherit" href="#7">7</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    base.OnMouseLeftButtonDown(e);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    // Begin dragging the window
</span></span><span style="display:flex;"><span>    this.DragMove();
</span></span><span style="display:flex;"><span>}</span></span></code></pre></td></tr></table>
</div>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Writing High-Perf. Managed Apps?</title>
      <link>/post/2006/01/writing-high-perf-managed-apps/</link>
      <pubDate>Tue, 03 Jan 2006 00:00:00 +0000</pubDate>
      <guid>/post/2006/01/writing-high-perf-managed-apps/</guid>
      <description>&lt;p&gt;If you are writing high-perf. managed applications, all the old-world advice from the days of good old COM is still valid. But you do need to think of a few other things such as how the CLR JIT would change things, or the Exception Handling, or Threading and syncing up, or possibly the GC and Allocation Profiles? While this MSDN article is old (now), it still is excellent &lt;a
	
		href = &#34;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		Food for Thought
	&lt;/span&gt;
&lt;/a&gt; when it comes to writing high-perf. apps.&lt;p&gt;

    &lt;img src=&#34;http://desigeek.com/weblog/aggbug.aspx?PostID=1823&#34; alt=&#34;&#34;/&gt;

&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you are writing high-perf. managed applications, all the old-world advice from the days of good old COM is still valid. But you do need to think of a few other things such as how the CLR JIT would change things, or the Exception Handling, or Threading and syncing up, or possibly the GC and Allocation Profiles? While this MSDN article is old (now), it still is excellent <a
	
		href = "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Food for Thought
	</span>
</a> when it comes to writing high-perf. apps.<p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=1823" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Exception Management in Threads</title>
      <link>/post/2005/12/exception-management-in-threads/</link>
      <pubDate>Sat, 31 Dec 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/12/exception-management-in-threads/</guid>
      <description>&lt;p&gt;Exception Management is a topic &lt;a
	
		href = &#34;http://www.osnews.com/story.php?news_id=6856&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		near and dear to me
	&lt;/span&gt;
&lt;/a&gt; personally, primarily because of the lack of understanding of most developers (that I have come across). There is an interesting change in the .NET 2.0 CLR on how it manages unhandled exceptions in a thread. If you write multi-threaded apps then this is important for you to understand. If you don&amp;rsquo;t write multi-threaded apps today, but I presume you would soon, then this is a good learning exercises.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Exception Management is a topic <a
	
		href = "http://www.osnews.com/story.php?news_id=6856"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		near and dear to me
	</span>
</a> personally, primarily because of the lack of understanding of most developers (that I have come across). There is an interesting change in the .NET 2.0 CLR on how it manages unhandled exceptions in a thread. If you write multi-threaded apps then this is important for you to understand. If you don&rsquo;t write multi-threaded apps today, but I presume you would soon, then this is a good learning exercises.</p>
<p>In .NET 2.0 the CLR allows unhandled exceptions in threads to <em><strong>proceed naturally</strong></em> - which in many cases probably means that the application will terminate. For certain cases (listed below) where exceptions are used for controlling program flow, the CLR does provide a <a
	
		href = "http://www.answers.com/backstop&amp;r=67"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		backstop
	</span>
</a> for unhandled exceptions in threads. Note, the CLR terminated the threads in these cases and does not propagate the exception further.</p>
<ul>
<li>Abort() is called causing a ThreadAbortException.</li>
<li>AppDomain (in which the thread is running) is being unloaded, causing a AppDomainUnloadedException.</li>
<li>The Host process (or CLR) terminates the thread via an internal exception.</li>
</ul>
<p>This is a significant change from .NET v1.x where there is no concept of a Unhandled Exception in many situations such as a Thread pool. If an unhandled exception is thrown, the runtime prints that to the console and then returns the thread to the thread pool. Also, if an unhandled exception occurs in the Start() method of a Thread class, the runtime again prints the exception stack trace to the console and then gracefully terminating the thread. Lastly, if an unhandled exception occurs on a Finalizer thread, the trace is written to the console, and the finalizer thread is allowed to resume!</p>
<p>Needless to say, if you have code currently designed for this, it will break in .NET 2.0 and you would need to change your implementation. As a temporary workaround you can choose your app to still use the old style from v1.x by setting the flag in the runtime section, but this should be strictly till such a time you can port the code over to the new version:</p>
<legacyUnhandledExceptionPolicy enabled="1"/>
<p>If you got MSDN installed for VS 05, you can read more <a
	
		href = "ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxadvance/html/11294769-2e89-43cb-890e-ad4ad79cfbee.htm"
	

	

	>
	
	<span>
		here then
	</span>
</a>.</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=1812" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Execution Context</title>
      <link>/post/2005/12/execution-context/</link>
      <pubDate>Tue, 27 Dec 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/12/execution-context/</guid>
      <description>&lt;p&gt;It is quite interesting to see how many people don&amp;rsquo;t understand the basics of threading, while it is a difficult topic (especially to debug), and it is not the silver bullet for all the problems, but it sure is quite handy for certain things. With the inevitable shift to multi-core CPU&amp;rsquo;s and the release of Vista to take better opportunity of these extra power, more applications in the future should be ready to exploit them. Which makes it quite important for the average developer to start playing and understanding this.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It is quite interesting to see how many people don&rsquo;t understand the basics of threading, while it is a difficult topic (especially to debug), and it is not the silver bullet for all the problems, but it sure is quite handy for certain things. With the inevitable shift to multi-core CPU&rsquo;s and the release of Vista to take better opportunity of these extra power, more applications in the future should be ready to exploit them. Which makes it quite important for the average developer to start playing and understanding this.</p>
<p>If you are new to this, one of the classes I would recommend reading up on is called ExecutionContext class. This class essentially is the equivalent of the COM Apartment (from the good old COM days). This class provides a single container for all information relevant to a logical thread of execution which includes security context, call context, synchronization context, localization context, and transaction context. You cannot change context of the thread (to which a ExecutionContext is attached), you can only copy it to another thread. If you do try and copy it you will get an Exception.</p>
<p>Here is an example from MSDN on how to use this (also testing the new <code>CopyAsHTML</code> Addin):</p>
<div class="highlight"><div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="1"><a style="outline:none;text-decoration:none;color:inherit" href="#1">  1</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="2"><a style="outline:none;text-decoration:none;color:inherit" href="#2">  2</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="3"><a style="outline:none;text-decoration:none;color:inherit" href="#3">  3</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="4"><a style="outline:none;text-decoration:none;color:inherit" href="#4">  4</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="5"><a style="outline:none;text-decoration:none;color:inherit" href="#5">  5</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="6"><a style="outline:none;text-decoration:none;color:inherit" href="#6">  6</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="7"><a style="outline:none;text-decoration:none;color:inherit" href="#7">  7</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="8"><a style="outline:none;text-decoration:none;color:inherit" href="#8">  8</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="9"><a style="outline:none;text-decoration:none;color:inherit" href="#9">  9</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="10"><a style="outline:none;text-decoration:none;color:inherit" href="#10"> 10</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="11"><a style="outline:none;text-decoration:none;color:inherit" href="#11"> 11</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="12"><a style="outline:none;text-decoration:none;color:inherit" href="#12"> 12</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="13"><a style="outline:none;text-decoration:none;color:inherit" href="#13"> 13</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="14"><a style="outline:none;text-decoration:none;color:inherit" href="#14"> 14</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="15"><a style="outline:none;text-decoration:none;color:inherit" href="#15"> 15</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="16"><a style="outline:none;text-decoration:none;color:inherit" href="#16"> 16</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="17"><a style="outline:none;text-decoration:none;color:inherit" href="#17"> 17</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="18"><a style="outline:none;text-decoration:none;color:inherit" href="#18"> 18</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="19"><a style="outline:none;text-decoration:none;color:inherit" href="#19"> 19</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="20"><a style="outline:none;text-decoration:none;color:inherit" href="#20"> 20</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="21"><a style="outline:none;text-decoration:none;color:inherit" href="#21"> 21</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="22"><a style="outline:none;text-decoration:none;color:inherit" href="#22"> 22</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="23"><a style="outline:none;text-decoration:none;color:inherit" href="#23"> 23</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="24"><a style="outline:none;text-decoration:none;color:inherit" href="#24"> 24</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="25"><a style="outline:none;text-decoration:none;color:inherit" href="#25"> 25</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="26"><a style="outline:none;text-decoration:none;color:inherit" href="#26"> 26</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="27"><a style="outline:none;text-decoration:none;color:inherit" href="#27"> 27</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="28"><a style="outline:none;text-decoration:none;color:inherit" href="#28"> 28</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="29"><a style="outline:none;text-decoration:none;color:inherit" href="#29"> 29</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="30"><a style="outline:none;text-decoration:none;color:inherit" href="#30"> 30</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="31"><a style="outline:none;text-decoration:none;color:inherit" href="#31"> 31</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="32"><a style="outline:none;text-decoration:none;color:inherit" href="#32"> 32</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="33"><a style="outline:none;text-decoration:none;color:inherit" href="#33"> 33</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="34"><a style="outline:none;text-decoration:none;color:inherit" href="#34"> 34</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="35"><a style="outline:none;text-decoration:none;color:inherit" href="#35"> 35</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="36"><a style="outline:none;text-decoration:none;color:inherit" href="#36"> 36</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="37"><a style="outline:none;text-decoration:none;color:inherit" href="#37"> 37</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="38"><a style="outline:none;text-decoration:none;color:inherit" href="#38"> 38</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="39"><a style="outline:none;text-decoration:none;color:inherit" href="#39"> 39</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="40"><a style="outline:none;text-decoration:none;color:inherit" href="#40"> 40</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="41"><a style="outline:none;text-decoration:none;color:inherit" href="#41"> 41</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="42"><a style="outline:none;text-decoration:none;color:inherit" href="#42"> 42</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="43"><a style="outline:none;text-decoration:none;color:inherit" href="#43"> 43</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="44"><a style="outline:none;text-decoration:none;color:inherit" href="#44"> 44</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="45"><a style="outline:none;text-decoration:none;color:inherit" href="#45"> 45</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="46"><a style="outline:none;text-decoration:none;color:inherit" href="#46"> 46</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="47"><a style="outline:none;text-decoration:none;color:inherit" href="#47"> 47</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="48"><a style="outline:none;text-decoration:none;color:inherit" href="#48"> 48</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="49"><a style="outline:none;text-decoration:none;color:inherit" href="#49"> 49</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="50"><a style="outline:none;text-decoration:none;color:inherit" href="#50"> 50</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="51"><a style="outline:none;text-decoration:none;color:inherit" href="#51"> 51</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="52"><a style="outline:none;text-decoration:none;color:inherit" href="#52"> 52</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="53"><a style="outline:none;text-decoration:none;color:inherit" href="#53"> 53</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="54"><a style="outline:none;text-decoration:none;color:inherit" href="#54"> 54</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="55"><a style="outline:none;text-decoration:none;color:inherit" href="#55"> 55</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="56"><a style="outline:none;text-decoration:none;color:inherit" href="#56"> 56</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="57"><a style="outline:none;text-decoration:none;color:inherit" href="#57"> 57</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="58"><a style="outline:none;text-decoration:none;color:inherit" href="#58"> 58</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="59"><a style="outline:none;text-decoration:none;color:inherit" href="#59"> 59</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="60"><a style="outline:none;text-decoration:none;color:inherit" href="#60"> 60</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="61"><a style="outline:none;text-decoration:none;color:inherit" href="#61"> 61</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="62"><a style="outline:none;text-decoration:none;color:inherit" href="#62"> 62</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="63"><a style="outline:none;text-decoration:none;color:inherit" href="#63"> 63</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="64"><a style="outline:none;text-decoration:none;color:inherit" href="#64"> 64</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="65"><a style="outline:none;text-decoration:none;color:inherit" href="#65"> 65</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="66"><a style="outline:none;text-decoration:none;color:inherit" href="#66"> 66</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="67"><a style="outline:none;text-decoration:none;color:inherit" href="#67"> 67</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="68"><a style="outline:none;text-decoration:none;color:inherit" href="#68"> 68</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="69"><a style="outline:none;text-decoration:none;color:inherit" href="#69"> 69</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="70"><a style="outline:none;text-decoration:none;color:inherit" href="#70"> 70</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="71"><a style="outline:none;text-decoration:none;color:inherit" href="#71"> 71</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="72"><a style="outline:none;text-decoration:none;color:inherit" href="#72"> 72</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="73"><a style="outline:none;text-decoration:none;color:inherit" href="#73"> 73</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="74"><a style="outline:none;text-decoration:none;color:inherit" href="#74"> 74</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="75"><a style="outline:none;text-decoration:none;color:inherit" href="#75"> 75</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="76"><a style="outline:none;text-decoration:none;color:inherit" href="#76"> 76</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="77"><a style="outline:none;text-decoration:none;color:inherit" href="#77"> 77</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="78"><a style="outline:none;text-decoration:none;color:inherit" href="#78"> 78</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="79"><a style="outline:none;text-decoration:none;color:inherit" href="#79"> 79</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="80"><a style="outline:none;text-decoration:none;color:inherit" href="#80"> 80</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="81"><a style="outline:none;text-decoration:none;color:inherit" href="#81"> 81</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="82"><a style="outline:none;text-decoration:none;color:inherit" href="#82"> 82</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="83"><a style="outline:none;text-decoration:none;color:inherit" href="#83"> 83</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="84"><a style="outline:none;text-decoration:none;color:inherit" href="#84"> 84</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="85"><a style="outline:none;text-decoration:none;color:inherit" href="#85"> 85</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="86"><a style="outline:none;text-decoration:none;color:inherit" href="#86"> 86</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="87"><a style="outline:none;text-decoration:none;color:inherit" href="#87"> 87</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="88"><a style="outline:none;text-decoration:none;color:inherit" href="#88"> 88</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="89"><a style="outline:none;text-decoration:none;color:inherit" href="#89"> 89</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="90"><a style="outline:none;text-decoration:none;color:inherit" href="#90"> 90</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="91"><a style="outline:none;text-decoration:none;color:inherit" href="#91"> 91</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="92"><a style="outline:none;text-decoration:none;color:inherit" href="#92"> 92</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="93"><a style="outline:none;text-decoration:none;color:inherit" href="#93"> 93</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="94"><a style="outline:none;text-decoration:none;color:inherit" href="#94"> 94</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="95"><a style="outline:none;text-decoration:none;color:inherit" href="#95"> 95</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="96"><a style="outline:none;text-decoration:none;color:inherit" href="#96"> 96</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="97"><a style="outline:none;text-decoration:none;color:inherit" href="#97"> 97</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="98"><a style="outline:none;text-decoration:none;color:inherit" href="#98"> 98</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="99"><a style="outline:none;text-decoration:none;color:inherit" href="#99"> 99</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="100"><a style="outline:none;text-decoration:none;color:inherit" href="#100">100</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="101"><a style="outline:none;text-decoration:none;color:inherit" href="#101">101</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="102"><a style="outline:none;text-decoration:none;color:inherit" href="#102">102</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="103"><a style="outline:none;text-decoration:none;color:inherit" href="#103">103</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="104"><a style="outline:none;text-decoration:none;color:inherit" href="#104">104</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="105"><a style="outline:none;text-decoration:none;color:inherit" href="#105">105</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="106"><a style="outline:none;text-decoration:none;color:inherit" href="#106">106</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="107"><a style="outline:none;text-decoration:none;color:inherit" href="#107">107</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="108"><a style="outline:none;text-decoration:none;color:inherit" href="#108">108</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="109"><a style="outline:none;text-decoration:none;color:inherit" href="#109">109</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="110"><a style="outline:none;text-decoration:none;color:inherit" href="#110">110</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="111"><a style="outline:none;text-decoration:none;color:inherit" href="#111">111</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="112"><a style="outline:none;text-decoration:none;color:inherit" href="#112">112</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="113"><a style="outline:none;text-decoration:none;color:inherit" href="#113">113</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="114"><a style="outline:none;text-decoration:none;color:inherit" href="#114">114</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="115"><a style="outline:none;text-decoration:none;color:inherit" href="#115">115</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="116"><a style="outline:none;text-decoration:none;color:inherit" href="#116">116</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="117"><a style="outline:none;text-decoration:none;color:inherit" href="#117">117</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="118"><a style="outline:none;text-decoration:none;color:inherit" href="#118">118</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="119"><a style="outline:none;text-decoration:none;color:inherit" href="#119">119</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="120"><a style="outline:none;text-decoration:none;color:inherit" href="#120">120</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="121"><a style="outline:none;text-decoration:none;color:inherit" href="#121">121</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="122"><a style="outline:none;text-decoration:none;color:inherit" href="#122">122</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="123"><a style="outline:none;text-decoration:none;color:inherit" href="#123">123</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="124"><a style="outline:none;text-decoration:none;color:inherit" href="#124">124</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="125"><a style="outline:none;text-decoration:none;color:inherit" href="#125">125</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="126"><a style="outline:none;text-decoration:none;color:inherit" href="#126">126</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="127"><a style="outline:none;text-decoration:none;color:inherit" href="#127">127</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="128"><a style="outline:none;text-decoration:none;color:inherit" href="#128">128</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="129"><a style="outline:none;text-decoration:none;color:inherit" href="#129">129</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="130"><a style="outline:none;text-decoration:none;color:inherit" href="#130">130</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="131"><a style="outline:none;text-decoration:none;color:inherit" href="#131">131</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="132"><a style="outline:none;text-decoration:none;color:inherit" href="#132">132</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="133"><a style="outline:none;text-decoration:none;color:inherit" href="#133">133</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="134"><a style="outline:none;text-decoration:none;color:inherit" href="#134">134</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="135"><a style="outline:none;text-decoration:none;color:inherit" href="#135">135</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="136"><a style="outline:none;text-decoration:none;color:inherit" href="#136">136</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="137"><a style="outline:none;text-decoration:none;color:inherit" href="#137">137</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="138"><a style="outline:none;text-decoration:none;color:inherit" href="#138">138</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="139"><a style="outline:none;text-decoration:none;color:inherit" href="#139">139</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="140"><a style="outline:none;text-decoration:none;color:inherit" href="#140">140</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="141"><a style="outline:none;text-decoration:none;color:inherit" href="#141">141</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="142"><a style="outline:none;text-decoration:none;color:inherit" href="#142">142</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="143"><a style="outline:none;text-decoration:none;color:inherit" href="#143">143</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="144"><a style="outline:none;text-decoration:none;color:inherit" href="#144">144</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="145"><a style="outline:none;text-decoration:none;color:inherit" href="#145">145</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="146"><a style="outline:none;text-decoration:none;color:inherit" href="#146">146</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="147"><a style="outline:none;text-decoration:none;color:inherit" href="#147">147</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="148"><a style="outline:none;text-decoration:none;color:inherit" href="#148">148</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="149"><a style="outline:none;text-decoration:none;color:inherit" href="#149">149</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="150"><a style="outline:none;text-decoration:none;color:inherit" href="#150">150</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="151"><a style="outline:none;text-decoration:none;color:inherit" href="#151">151</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="152"><a style="outline:none;text-decoration:none;color:inherit" href="#152">152</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="153"><a style="outline:none;text-decoration:none;color:inherit" href="#153">153</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="154"><a style="outline:none;text-decoration:none;color:inherit" href="#154">154</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="155"><a style="outline:none;text-decoration:none;color:inherit" href="#155">155</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="156"><a style="outline:none;text-decoration:none;color:inherit" href="#156">156</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="157"><a style="outline:none;text-decoration:none;color:inherit" href="#157">157</a>
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2" id="158"><a style="outline:none;text-decoration:none;color:inherit" href="#158">158</a>
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Threading</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Security</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Collections</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Security.Permissions</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Runtime.Serialization</span>;
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">using</span> <span style="color:#f5a97f">System.Runtime.Remoting.Messaging</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#c6a0f6">namespace</span> <span style="color:#f5a97f">Contoso</span>
</span></span><span style="display:flex;"><span> {
</span></span><span style="display:flex;"><span>     <span style="color:#c6a0f6">class</span> <span style="color:#eed49f">ExecutionContextSample</span>
</span></span><span style="display:flex;"><span>     {
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">static</span> <span style="color:#c6a0f6">void</span> Main()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">try</span>
</span></span><span style="display:flex;"><span>             {
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Executing Main in the primary thread.&#34;</span>);
</span></span><span style="display:flex;"><span>                 FileDialogPermission fdp = <span style="color:#c6a0f6">new</span> FileDialogPermission(
</span></span><span style="display:flex;"><span>                     FileDialogPermissionAccess.OpenSave);
</span></span><span style="display:flex;"><span>                 fdp.Deny();
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Capture the execution context containing the Deny.</span>
</span></span><span style="display:flex;"><span>                 ExecutionContext eC = ExecutionContext.Capture();
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Suppress the flow of the execution context.</span>
</span></span><span style="display:flex;"><span>                 AsyncFlowControl aFC = ExecutionContext.SuppressFlow();
</span></span><span style="display:flex;"><span>                 Thread t1 = <span style="color:#c6a0f6">new</span> Thread(<span style="color:#c6a0f6">new</span> ThreadStart(DemandPermission));
</span></span><span style="display:flex;"><span>                 t1.Start();
</span></span><span style="display:flex;"><span>                 t1.Join();
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Is the flow suppressed? &#34;</span> +
</span></span><span style="display:flex;"><span>                     ExecutionContext.IsFlowSuppressed());
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Restore the flow.&#34;</span>);
</span></span><span style="display:flex;"><span>                 aFC.Undo();
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Is the flow suppressed? &#34;</span> +
</span></span><span style="display:flex;"><span>                     ExecutionContext.IsFlowSuppressed());
</span></span><span style="display:flex;"><span>                 Thread t2 = <span style="color:#c6a0f6">new</span> Thread(<span style="color:#c6a0f6">new</span> ThreadStart(DemandPermission));
</span></span><span style="display:flex;"><span>                 t2.Start();
</span></span><span style="display:flex;"><span>                 t2.Join();
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Remove the Deny.</span>
</span></span><span style="display:flex;"><span>                 CodeAccessPermission.RevertDeny();
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Capture the context that does not contain the Deny.</span>
</span></span><span style="display:flex;"><span>                 ExecutionContext eC2 = ExecutionContext.Capture();
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Show that the Deny is no longer present.</span>
</span></span><span style="display:flex;"><span>                 Thread t3 = <span style="color:#c6a0f6">new</span> Thread(<span style="color:#c6a0f6">new</span> ThreadStart(DemandPermission));
</span></span><span style="display:flex;"><span>                 t3.Start();
</span></span><span style="display:flex;"><span>                 t3.Join();
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Set the context that contains the Deny.</span>
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Show the deny is again active.</span>
</span></span><span style="display:flex;"><span>                 Thread t4 = <span style="color:#c6a0f6">new</span> Thread(<span style="color:#c6a0f6">new</span> ThreadStart(DemandPermission));
</span></span><span style="display:flex;"><span>                 t4.Start();
</span></span><span style="display:flex;"><span>                 t4.Join();
</span></span><span style="display:flex;"><span>                 <span style="color:#6e738d;font-style:italic">// Demonstrate the execution context methods.</span>
</span></span><span style="display:flex;"><span>                 ExecutionContextMethods();
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Demo is complete, press Enter to exit.&#34;</span>);
</span></span><span style="display:flex;"><span>                 Console.Read();
</span></span><span style="display:flex;"><span>             }
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">catch</span> (Exception e)
</span></span><span style="display:flex;"><span>             {
</span></span><span style="display:flex;"><span>                 Console.WriteLine(e.Message);
</span></span><span style="display:flex;"><span>             }
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>         <span style="color:#6e738d;font-style:italic">// Execute the Demand.</span>
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">static</span> <span style="color:#c6a0f6">void</span> DemandPermission()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">try</span>
</span></span><span style="display:flex;"><span>             {
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;In the thread executing a Demand for &#34;</span> +
</span></span><span style="display:flex;"><span>                     <span style="color:#a6da95">&#34;FileDialogPermission.&#34;</span>);
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">new</span> FileDialogPermission(
</span></span><span style="display:flex;"><span>                     FileDialogPermissionAccess.OpenSave).Demand();
</span></span><span style="display:flex;"><span>                 Console.WriteLine(<span style="color:#a6da95">&#34;Successfully demanded &#34;</span> +
</span></span><span style="display:flex;"><span>                     <span style="color:#a6da95">&#34;FileDialogPermission.&#34;</span>);
</span></span><span style="display:flex;"><span>             }
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">catch</span> (Exception e)
</span></span><span style="display:flex;"><span>             {
</span></span><span style="display:flex;"><span>                 Console.WriteLine(e.Message);
</span></span><span style="display:flex;"><span>             }
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">static</span> <span style="color:#c6a0f6">void</span> ExecutionContextMethods()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// Generate a call context for this thread.</span>
</span></span><span style="display:flex;"><span>             ContextBoundType cBT = <span style="color:#c6a0f6">new</span> ContextBoundType();
</span></span><span style="display:flex;"><span>             cBT.GetServerTime();
</span></span><span style="display:flex;"><span>             ExecutionContext eC1 = ExecutionContext.Capture();
</span></span><span style="display:flex;"><span>             ExecutionContext eC2 = eC1.CreateCopy();
</span></span><span style="display:flex;"><span>             Console.WriteLine(<span style="color:#a6da95">&#34;The hash code for the first execution &#34;</span> +
</span></span><span style="display:flex;"><span>                 <span style="color:#a6da95">&#34;context is: &#34;</span> + eC1.GetHashCode());
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// Create a SerializationInfo object to be used for getting the</span>
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// object data.</span>
</span></span><span style="display:flex;"><span>             SerializationInfo sI = <span style="color:#c6a0f6">new</span> SerializationInfo(
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">typeof</span>(ExecutionContext),
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">new</span> FormatterConverter());
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>             eC1.GetObjectData(
</span></span><span style="display:flex;"><span>                 sI,
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">new</span> StreamingContext(StreamingContextStates.All));
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>             LogicalCallContext lCC = (LogicalCallContext)sI.GetValue(
</span></span><span style="display:flex;"><span>                 <span style="color:#a6da95">&#34;LogicalCallContext&#34;</span>,
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">typeof</span>(LogicalCallContext));
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// The logical call context object should contain the previously</span>
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// created call context.</span>
</span></span><span style="display:flex;"><span>             Console.WriteLine(<span style="color:#a6da95">&#34;Is the logical call context information &#34;</span> +
</span></span><span style="display:flex;"><span>                 <span style="color:#a6da95">&#34;available? &#34;</span> + lCC.HasInfo);
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span>     }
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>     <span style="color:#6e738d;font-style:italic">// One means of communicating between client and server is to use the</span>
</span></span><span style="display:flex;"><span>     <span style="color:#6e738d;font-style:italic">// CallContext class. Calling CallContext effectivel puts the data in a thread</span>
</span></span><span style="display:flex;"><span>     <span style="color:#6e738d;font-style:italic">// local store. This means that the information is available to that thread</span>
</span></span><span style="display:flex;"><span>     <span style="color:#6e738d;font-style:italic">// or that logical thread (across application domains) only.</span>
</span></span><span style="display:flex;"><span><span style="color:#8aadf4">     [Serializable]</span>
</span></span><span style="display:flex;"><span>     <span style="color:#ed8796">public</span> <span style="color:#c6a0f6">class</span> <span style="color:#eed49f">CallContextString</span> : ILogicalThreadAffinative
</span></span><span style="display:flex;"><span>     {
</span></span><span style="display:flex;"><span>         String _str = <span style="color:#a6da95">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">public</span> CallContextString(String str)
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             _str = str;
</span></span><span style="display:flex;"><span>             Console.WriteLine(<span style="color:#a6da95">&#34;A CallContextString has been created.&#34;</span>);
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">public</span> <span style="color:#ed8796">override</span> String ToString()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">return</span> _str;
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span>     }
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>     <span style="color:#ed8796">public</span> <span style="color:#c6a0f6">class</span> <span style="color:#eed49f">ContextBoundType</span> : ContextBoundObject
</span></span><span style="display:flex;"><span>     {
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">private</span> DateTime starttime;
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">public</span> ContextBoundType()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             Console.WriteLine(<span style="color:#a6da95">&#34;An instance of ContextBoundType has been &#34;</span> +
</span></span><span style="display:flex;"><span>                <span style="color:#a6da95">&#34;created.&#34;</span>);
</span></span><span style="display:flex;"><span>             starttime = DateTime.Now;
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span><span style="color:#8aadf4">
</span></span></span><span style="display:flex;"><span><span style="color:#8aadf4">         [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]</span>
</span></span><span style="display:flex;"><span>         <span style="color:#ed8796">public</span> DateTime GetServerTime()
</span></span><span style="display:flex;"><span>         {
</span></span><span style="display:flex;"><span>             Console.WriteLine(<span style="color:#a6da95">&#34;The time requested by a client.&#34;</span>);
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// This call overwrites the client&#39;s</span>
</span></span><span style="display:flex;"><span>             <span style="color:#6e738d;font-style:italic">// CallContextString.</span>
</span></span><span style="display:flex;"><span>             CallContext.SetData(
</span></span><span style="display:flex;"><span>                 <span style="color:#a6da95">&#34;ServerThreadData&#34;</span>,
</span></span><span style="display:flex;"><span>                 <span style="color:#c6a0f6">new</span> CallContextString(<span style="color:#a6da95">&#34;This is the server side replacement &#34;</span> +
</span></span><span style="display:flex;"><span>                 <span style="color:#a6da95">&#34;string.&#34;</span>));
</span></span><span style="display:flex;"><span>             <span style="color:#c6a0f6">return</span> DateTime.Now;
</span></span><span style="display:flex;"><span>         }
</span></span><span style="display:flex;"><span>     } 
</span></span><span style="display:flex;"><span> }</span></span></code></pre></td></tr></table>
</div>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>System.Transactions and Timeout</title>
      <link>/post/2005/12/system-transactions-and-timeout/</link>
      <pubDate>Fri, 16 Dec 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/12/system-transactions-and-timeout/</guid>
      <description>&lt;p&gt;Cross posting from &lt;a
	
		href = &#34;http://blogs.msdn.com/dotnetinterop/archive/2005/12/16/504604.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		All about Interop
	&lt;/span&gt;
&lt;/a&gt;; System.Transactions has two timeout values that you can specify in configuration files. The default timeout for System.Transactions transactions is 1 minute.  You can set it in either app config, web config, or machine config.  (You can also set the timeout for a particular transaction programmatically within the application, by using one of the appropriate constructors for TransactionScope or CommittableTransaction).  Setting the default timeout to 30 seconds in config code looks like the following.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Cross posting from <a
	
		href = "http://blogs.msdn.com/dotnetinterop/archive/2005/12/16/504604.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		All about Interop
	</span>
</a>; System.Transactions has two timeout values that you can specify in configuration files. The default timeout for System.Transactions transactions is 1 minute.  You can set it in either app config, web config, or machine config.  (You can also set the timeout for a particular transaction programmatically within the application, by using one of the appropriate constructors for TransactionScope or CommittableTransaction).  Setting the default timeout to 30 seconds in config code looks like the following.</p>
<configuration>  
 <system.transactions>  
  <defaultSettings timeout="00:00:30" />  
 </system.transactions>  
</configuration>
<p>For System.Transactions there is also a maximum transaction timeout. It is designed to be used by the System Administrator to limit transaction timeouts. If this setting is not specified, it defaults to 10 minutes.  It cannot be overridden in code.   If the app.config timeout or the timeout specified in the constructors above exceed the maximum timeout in the machine.config, the timeout is adjusted down to the maximum timeout value. That can be specified only in machine config.  To change that you would specify the maxTimeout property of the machine settings section.  For example, this specifies 30 seconds:</p>
<configuration>  
 <system.transactions>  
   <machineSettings maxTimeout="00:00:30" />  
 </system.transactions>  
</configuration>
<p>So, for example if your app.config setting specifies a defaultSettings timeout of zero, which implies (with a screwy sort of logic) infinite timeout, or if your application code specifies a zero timeout in one of the constructors, then the actual timeout of the transaction will not be infinite - it will be bound to the setting for machineSettings maxTimeout.</p>
<p>For any high-throughput transactional server, The default maxTimeout setting is probably not right for you.  You&rsquo;re going to want to set this pretty low.</p>
<p>This is for any transaction managed by DTC - that would include transactions involving SQL Server, Oracle, MQ, DB2, and so on.  If your transactions are timing out after 10 minutes and you want to know why, check these settings.</p>
<p>[Listening to: I Am - Bon Jovi - Have A Nice Day (03:54)]</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=1778" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Secure Startup Volume Encryption in Vista</title>
      <link>/post/2005/08/secure-startup-volume-encryption-in-vista/</link>
      <pubDate>Tue, 16 Aug 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/08/secure-startup-volume-encryption-in-vista/</guid>
      <description>&lt;p&gt;It has been long overdue and now its finally present. Vista has something called the Secure Startup Volume Encryption which will work on computers with the Trusted Module Platform (TPM) chip. Here, all except the bare minimum of the boot volume is encrypted and at boot time the TPM transparently allows access to the drive. If someone either removed the hard disk and puts it in a different machine or attempts to boot from a different OS, the disk will be unreadable without a password. There is no GUI for this in Beta 1 but the service is there.&lt;p&gt;

    &lt;img src=&#34;http://desigeek.com/weblog/aggbug.aspx?PostID=1657&#34; alt=&#34;&#34;/&gt;

&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It has been long overdue and now its finally present. Vista has something called the Secure Startup Volume Encryption which will work on computers with the Trusted Module Platform (TPM) chip. Here, all except the bare minimum of the boot volume is encrypted and at boot time the TPM transparently allows access to the drive. If someone either removed the hard disk and puts it in a different machine or attempts to boot from a different OS, the disk will be unreadable without a password. There is no GUI for this in Beta 1 but the service is there.<p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=1657" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Profilers for the CLR</title>
      <link>/post/2005/06/profilers-for-the-clr/</link>
      <pubDate>Tue, 28 Jun 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/06/profilers-for-the-clr/</guid>
      <description>&lt;p&gt;Brad Adams lists out a few &lt;a
	
		href = &#34;http://blogs.msdn.com/brada/archive/2005/03/17/398060.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		options for Profilers available in the CLR
	&lt;/span&gt;
&lt;/a&gt; - some of these possibly are familiar to you - but its good to see them listed in one place. (got this via &lt;a
	
		href = &#34;http://www.gritstoneandchips.com/Blog/&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		Jon Kale
	&lt;/span&gt;
&lt;/a&gt; who was responding to something else).&lt;/p&gt;
&lt;p&gt;&lt;p&gt;

    &lt;img src=&#34;http://desigeek.com/weblog/aggbug.aspx?PostID=1584&#34; alt=&#34;&#34;/&gt;

&lt;/p&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Brad Adams lists out a few <a
	
		href = "http://blogs.msdn.com/brada/archive/2005/03/17/398060.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		options for Profilers available in the CLR
	</span>
</a> - some of these possibly are familiar to you - but its good to see them listed in one place. (got this via <a
	
		href = "http://www.gritstoneandchips.com/Blog/"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Jon Kale
	</span>
</a> who was responding to something else).</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=1584" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Inside regsvc.exe</title>
      <link>/post/2005/03/inside-regsvc-exe/</link>
      <pubDate>Thu, 24 Mar 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/03/inside-regsvc-exe/</guid>
      <description>&lt;p&gt;Ever wondered what is happening inside regsvc.exe? Well so did Tomas Restrepo, and &lt;a
	
		href = &#34;http://www.winterdom.com/weblog/archives/000165.html&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		here
	&lt;/span&gt;
&lt;/a&gt; is what he found out.&lt;p&gt;

    &lt;img src=&#34;http://desigeek.com/weblog/aggbug.aspx?PostID=645&#34; alt=&#34;&#34;/&gt;

&lt;/p&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Ever wondered what is happening inside regsvc.exe? Well so did Tomas Restrepo, and <a
	
		href = "http://www.winterdom.com/weblog/archives/000165.html"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		here
	</span>
</a> is what he found out.<p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=645" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>System Programming?</title>
      <link>/post/2005/03/system-programming/</link>
      <pubDate>Thu, 24 Mar 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/03/system-programming/</guid>
      <description>&lt;p&gt;If you ever wanted a quick sample of some system programming - something you know is fairly simple to do but did not have the time to do it from scratch - just something quick and dirty, then you should check out &lt;a
	
		href = &#34;http://docs.msdnaa.net/ark_new3.0/cd3/content/Tech_System%20Programming.htm#title2_14&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		this link
	&lt;/span&gt;
&lt;/a&gt; - which has all the basic stuff Thread Pools, Waitable Handles, Monitors, Secure Remoting channel, etc.&lt;p&gt;

    &lt;img src=&#34;http://desigeek.com/weblog/aggbug.aspx?PostID=643&#34; alt=&#34;&#34;/&gt;

&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you ever wanted a quick sample of some system programming - something you know is fairly simple to do but did not have the time to do it from scratch - just something quick and dirty, then you should check out <a
	
		href = "http://docs.msdnaa.net/ark_new3.0/cd3/content/Tech_System%20Programming.htm#title2_14"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		this link
	</span>
</a> - which has all the basic stuff Thread Pools, Waitable Handles, Monitors, Secure Remoting channel, etc.<p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=643" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Getting Started With Enterprise Library</title>
      <link>/post/2005/02/getting-started-with-enterprise-library/</link>
      <pubDate>Wed, 09 Feb 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/02/getting-started-with-enterprise-library/</guid>
      <description>&lt;p&gt;If you recall I had &lt;a
	
		href = &#34;http://desigeek.com/weblog/amit/archive/2005/01/29/578.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		recently posted
	&lt;/span&gt;
&lt;/a&gt; about the release of Enterprise Lib. My colleague, Hisham Baz has a post on &lt;a
	
		href = &#34;http://blog.hishambaz.com/archive/2005/01/29/194.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		how to get started with the Ent. Lib
	&lt;/span&gt;
&lt;/a&gt;. If you are new to it and want to know more about it, that is a good place to start.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you recall I had <a
	
		href = "http://desigeek.com/weblog/amit/archive/2005/01/29/578.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		recently posted
	</span>
</a> about the release of Enterprise Lib. My colleague, Hisham Baz has a post on <a
	
		href = "http://blog.hishambaz.com/archive/2005/01/29/194.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		how to get started with the Ent. Lib
	</span>
</a>. If you are new to it and want to know more about it, that is a good place to start.</p>
<p>[Listening to: Boy in the Well - R.E.M. - Around the Sun (05:22)]</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=593" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Tips and Trips for .NET Compact Framework</title>
      <link>/post/2005/01/tips-and-trips-for-net-compact-framework/</link>
      <pubDate>Thu, 06 Jan 2005 00:00:00 +0000</pubDate>
      <guid>/post/2005/01/tips-and-trips-for-net-compact-framework/</guid>
      <description>&lt;p&gt;Dave and John &lt;a
	
		href = &#34;http://msdn.microsoft.com/msdnmag/issues/04/12/NETCompactFramework/default.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		discuss various aspects
	&lt;/span&gt;
&lt;/a&gt; of the .NET Compact Framework (CF) where in addition to the list belowthey cover things like the fastest way to splat text onto the screen? &lt;a
	
		href = &#34;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_2ks4.asp&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		ExtTextOut
	&lt;/span&gt;
&lt;/a&gt; using which you can draw text based on the currently selected font, background color, and text color. You can optionally provide dimensions to be used for clipping, opaquing, or both. It can also draw with a transparent background, which labels in the .NET Compact Framework do not support (just try to put a label over a PictureBox and you&amp;rsquo;ll see).&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Dave and John <a
	
		href = "http://msdn.microsoft.com/msdnmag/issues/04/12/NETCompactFramework/default.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		discuss various aspects
	</span>
</a> of the .NET Compact Framework (CF) where in addition to the list belowthey cover things like the fastest way to splat text onto the screen? <a
	
		href = "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_2ks4.asp"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		ExtTextOut
	</span>
</a> using which you can draw text based on the currently selected font, background color, and text color. You can optionally provide dimensions to be used for clipping, opaquing, or both. It can also draw with a transparent background, which labels in the .NET Compact Framework do not support (just try to put a label over a PictureBox and you&rsquo;ll see).</p>
<ul>
<li>Tips for making programming in the .NET CF environment easier</li>
<li>Tricks for making your Pocket PC-based apps run faster</li>
<li>Important .NET CF classes</li>
<li>.NET CF windowing issues</li>
</ul>
<p>If you do development on the CF then this is good article to read up on. As they conclude &ldquo;<em>Writing applications for the .NET Compact Framework is a wonderful experience. The applications are small enough that shareware developers can once again write something on their own and sell it online to make a little bit of money. But the simplicity and small capacity of mobile devices present new challenges to programmers. Without awesome power, you have awesome responsibility. Strive from the get-go to design code that is fast, tight, and highly, highly disposable.</em>&rdquo;</p>
<p>More Information:  <a
	
		href = "http://tinyurl.com/6xvsl"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		http://tinyurl.com/6xvsl
	</span>
</a></p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=539" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>PInvoke.NET</title>
      <link>/post/2004/12/pinvoke-net/</link>
      <pubDate>Wed, 15 Dec 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/12/pinvoke-net/</guid>
      <description>&lt;p&gt;If you ever thought that PInvoke was a pain in .NET, don&amp;rsquo;t fret, Adam Nathan has a &lt;a
	
		href = &#34;http://blogs.msdn.com/adam_nathan/archive/2004/05/06/127403.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		VS.NET addin
	&lt;/span&gt;
&lt;/a&gt; that you can &lt;a
	
		href = &#34;http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=75122f62-5459-4364-b9ba-7b5e6a4754fe&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		get from here
	&lt;/span&gt;
&lt;/a&gt; after using which you wondered, how the heck did I live without this! He also has a &lt;a
	
		href = &#34;http://www.pinvoke.net/&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		PInvoke.NET wiki
	&lt;/span&gt;
&lt;/a&gt; for you to use and of course contribute to.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you ever thought that PInvoke was a pain in .NET, don&rsquo;t fret, Adam Nathan has a <a
	
		href = "http://blogs.msdn.com/adam_nathan/archive/2004/05/06/127403.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		VS.NET addin
	</span>
</a> that you can <a
	
		href = "http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=75122f62-5459-4364-b9ba-7b5e6a4754fe"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		get from here
	</span>
</a> after using which you wondered, how the heck did I live without this! He also has a <a
	
		href = "http://www.pinvoke.net/"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		PInvoke.NET wiki
	</span>
</a> for you to use and of course contribute to.</p>
<p>If you rather get to it yourself, then there is an <a
	
		href = "http://www.pinvoke.net/pinvokeservice.asmx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		wsdl endpoint exposed
	</span>
</a> and Stripe has written a version that is <a
	
		href = "http://www.stripe.dsl.pipex.com/PInvokeAddin"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		proxy friendly
	</span>
</a>. If you happen to be a Delphi.NET (strange as that might be) kind of guy or gal, you can get the check out <a
	
		href = "http://shenoyatwork.blogspot.com/2004/06/pinvoke-and-delphi.html"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Shenoy&rsquo;s implementation
	</span>
</a> of this.</p>
<p>After installing the add-in you can right-click in the source code to see the following two menu items:</p>
<p> <p>

    <img src="images/addin1.png" alt=""/>

</p></p>
<p>Clicking on the first item opens a dialog allowing you to enter the signature e.g.:</p>
<p><a
	
		href = "http://www.pinvoke.net/blog/images/addin2.png"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<p>

    <img src="images/addin2.png" alt=""/>

</p>
	</span>
</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Tracking down managed memory leaks (how to find a GC leak)</title>
      <link>/post/2004/12/tracking-down-managed-memory-leaks-how-to-find-a-gc-leak/</link>
      <pubDate>Wed, 15 Dec 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/12/tracking-down-managed-memory-leaks-how-to-find-a-gc-leak/</guid>
      <description>&lt;p&gt;At work, recently I attended an excellent presentation given by a colleague where we talked about Debugging in general (across both Managed and Unmanaged code), and what the various categories are, and various tools at ones disposal, etc. I thought this post from Rico on &lt;a
	
		href = &#34;http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		how to find GC leaks
	&lt;/span&gt;
&lt;/a&gt; was quite timely for that topic.&lt;/p&gt;
&lt;p&gt;[Listening to: City of Blinding Lights - U2 - How to Dismantle an Atomic Bomb [Bonus Track] (05:48)]&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>At work, recently I attended an excellent presentation given by a colleague where we talked about Debugging in general (across both Managed and Unmanaged code), and what the various categories are, and various tools at ones disposal, etc. I thought this post from Rico on <a
	
		href = "http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		how to find GC leaks
	</span>
</a> was quite timely for that topic.</p>
<p>[Listening to: City of Blinding Lights - U2 - How to Dismantle an Atomic Bomb [Bonus Track] (05:48)]</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=497" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Assembly signing changes in VS 2005</title>
      <link>/post/2004/09/assembly-signing-changes-in-vs-2005/</link>
      <pubDate>Thu, 30 Sep 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/09/assembly-signing-changes-in-vs-2005/</guid>
      <description>&lt;p&gt;Bruce has a &lt;a
	
		href = &#34;http://objectsharp.com/Blogs/bruce/archive/2004/08/05/797.aspx&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		post
	&lt;/span&gt;
&lt;/a&gt; (which I verbatim here) highlighting one of the small changes in Whidbey which will make life easier for a whole bunch of us.&lt;/p&gt;
&lt;p&gt;In Whidbey, the name of the .snk file is included as a property on the project and is picked up my msbuild when compiling.  To get to it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right-click on the project in the solution explorer and select Properties.&lt;/li&gt;
&lt;li&gt;Click on the Signing tab.&lt;/li&gt;
&lt;li&gt;Provide the path to the .snk file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;How is it done today?&lt;/strong&gt; As Bruce reminds us (and I verbatim here) signing assemblies in VS2003 and earlier meant adding attributes to the AssemblyInfo file, something similar to the following.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Bruce has a <a
	
		href = "http://objectsharp.com/Blogs/bruce/archive/2004/08/05/797.aspx"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		post
	</span>
</a> (which I verbatim here) highlighting one of the small changes in Whidbey which will make life easier for a whole bunch of us.</p>
<p>In Whidbey, the name of the .snk file is included as a property on the project and is picked up my msbuild when compiling.  To get to it:</p>
<ul>
<li>Right-click on the project in the solution explorer and select Properties.</li>
<li>Click on the Signing tab.</li>
<li>Provide the path to the .snk file.</li>
</ul>
<p><strong>How is it done today?</strong> As Bruce reminds us (and I verbatim here) signing assemblies in VS2003 and earlier meant adding attributes to the AssemblyInfo file, something similar to the following.</p>
<p>[assembly: AssemblyKeyFile(&quot;..\\..\\ObjectSharp.snk&quot;)]<br>
[assembly: AssemblyDelaySign(false)]</p>
<p>But there are a couple of issues associated with these attributes.  First, the path to the key file is actually embedded in the assembly.  If you use a full path, it is possible that information about your machine (servers and directories, for example) can be easily extracted by using ildasm.  Not overtly dangerous, but not the best situation.</p>
<p>Also, providing a relative path to the key file is annoying.  I&rsquo;m sure most of you have dealt with the trial and error of finding exactly where the .snk file is relative to the compilation directory.</p>
<p>Finally, because compilation cleanliness is important to all of us, keeping the AssemblyKeyFile attribute in AssemblyInfo generates a warning message.  Not always critical, but annoying.</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=420" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>.NET Service Pack 1 can break HttpWebRequest</title>
      <link>/post/2004/09/net-service-pack-1-can-break-httpwebrequest/</link>
      <pubDate>Sun, 05 Sep 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/09/net-service-pack-1-can-break-httpwebrequest/</guid>
      <description>&lt;p&gt;If you installed .NET Service Pack 1 you might notice that certain RSS feeds are broken and might return an HTTP Protocol Error. As &lt;a
	
		href = &#34;http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d98a420e-6679-474c-865a-30578338ceb8&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		Dare suggests
	&lt;/span&gt;
&lt;/a&gt;, this is due to the fact that the HttpWebRequest class has been modified to make it more compliant to the HTTP spec. E.g. on the MS research feeds, this errors because the server returns the &lt;strong&gt;Content-Location&lt;/strong&gt; header as “&lt;strong&gt;Content Location&lt;/strong&gt;” (notice the space as opposed to the hyphen). You can check out the &lt;a
	
		href = &#34;http://support.microsoft.com/?kbid=867460&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		&lt;strong&gt;list of fixes&lt;/strong&gt;
	&lt;/span&gt;
&lt;/a&gt; in .NET SP1.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If you installed .NET Service Pack 1 you might notice that certain RSS feeds are broken and might return an HTTP Protocol Error. As <a
	
		href = "http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d98a420e-6679-474c-865a-30578338ceb8"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Dare suggests
	</span>
</a>, this is due to the fact that the HttpWebRequest class has been modified to make it more compliant to the HTTP spec. E.g. on the MS research feeds, this errors because the server returns the <strong>Content-Location</strong> header as “<strong>Content Location</strong>” (notice the space as opposed to the hyphen). You can check out the <a
	
		href = "http://support.microsoft.com/?kbid=867460"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>list of fixes</strong>
	</span>
</a> in .NET SP1.</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=396" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Writing Windows-Shell Extensions using .NET</title>
      <link>/post/2004/07/writing-windows-shell-extensions-using-net/</link>
      <pubDate>Fri, 02 Jul 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/07/writing-windows-shell-extensions-using-net/</guid>
      <description>&lt;p&gt;Dino writes an interesting &lt;a
	
		href = &#34;http://www.theserverside.net/articles/showarticle.tss?id=ShellExtensions&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		&lt;strong&gt;article&lt;/strong&gt;
	&lt;/span&gt;
&lt;/a&gt; on how to write shell extensions in managed code. He also provides a brief overview of COM Interop covering both CCW (COM Callable Wrappers) and RCW (Runtime Callable Wrappers), which those of you who have had any experience with COM know has a fair amount of overheard and though is quite seamless to use, it is not to be taken lightly &lt;strong&gt;especially&lt;/strong&gt; if you have custom data types in COM.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Dino writes an interesting <a
	
		href = "http://www.theserverside.net/articles/showarticle.tss?id=ShellExtensions"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>article</strong>
	</span>
</a> on how to write shell extensions in managed code. He also provides a brief overview of COM Interop covering both CCW (COM Callable Wrappers) and RCW (Runtime Callable Wrappers), which those of you who have had any experience with COM know has a fair amount of overheard and though is quite seamless to use, it is not to be taken lightly <strong>especially</strong> if you have custom data types in COM.</p>
<p>The key takeaway to remember for shell extension in addition to the COM Interop basics is the Win32 data types (constants, structs, enums, etc.) that need to be imported. You specify how do you want the type layout - either sequential or offset based - which one you would of course base on the structure of the COM data type.</p>
<p>If you have not played with Interop till now, then I would recommend reading up on the <a
	
		href = "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcoricominteroptutorial.asp"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>COM Interop tutorials</strong>
	</span>
</a> first and trying out some simpler stuff. Also in Longhorn, the shell is running managed code, so there is no interop involved.</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=310" alt=""/>

</p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Invoking Google&#39;s web service on a Smartphone</title>
      <link>/post/2004/06/invoking-googles-web-service-on-a-smartphone/</link>
      <pubDate>Mon, 07 Jun 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/06/invoking-googles-web-service-on-a-smartphone/</guid>
      <description>&lt;p&gt;Incase you did not hear, then which planet are you living on, but Google exposes their offering via a &lt;a
	
		href = &#34;http://www.google.com/apis/&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		&lt;strong&gt;Web Service&lt;/strong&gt;
	&lt;/span&gt;
&lt;/a&gt; that you can use to search for &amp;hellip; well &amp;hellip; stuff. If you have programed on the .NET CF then you know this is quite simple (especially if you program on the “regular” .NET). Incase you have not dabbled in this and are interested in doing something simple then check out &lt;a
	
		href = &#34;http://www.devbuzz.com/content/googleAPI_Smartphone_pg1.asp&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		&lt;strong&gt;this&lt;/strong&gt;
	&lt;/span&gt;
&lt;/a&gt; article which steps you thru the simple application. If you are interested in doing some more mobile development then here are a few links for you to check out:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Incase you did not hear, then which planet are you living on, but Google exposes their offering via a <a
	
		href = "http://www.google.com/apis/"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>Web Service</strong>
	</span>
</a> that you can use to search for &hellip; well &hellip; stuff. If you have programed on the .NET CF then you know this is quite simple (especially if you program on the “regular” .NET). Incase you have not dabbled in this and are interested in doing something simple then check out <a
	
		href = "http://www.devbuzz.com/content/googleAPI_Smartphone_pg1.asp"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>this</strong>
	</span>
</a> article which steps you thru the simple application. If you are interested in doing some more mobile development then here are a few links for you to check out:</p>
<ul>
<li><a
	
		href = "http://www.microsoft.com/mobile/developer"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Pocket PC and Smart Phone Development
	</span>
</a></li>
<li><a
	
		href = "http://msdn.microsoft.com/mobility/"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		MSDN
	</span>
</a></li>
<li><a
	
		href = "http://msdn.microsoft.com/mobility/understanding/gettingstarted/netcf/default.aspx?pull=/library/en-us/dnnetcomp/html/netcfgetstarted.asp"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		Getting Started with .NET CF
	</span>
</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Mono Beta 2</title>
      <link>/post/2004/06/mono-beta-2/</link>
      <pubDate>Thu, 03 Jun 2004 00:00:00 +0000</pubDate>
      <guid>/post/2004/06/mono-beta-2/</guid>
      <description>&lt;p&gt;About a month after releasing the first beta, Mono &lt;a
	
		href = &#34;http://www.go-mono.com/archive/beta2/beta2.html&#34;
	

	

	
		target = &#34;_blank&#34;
		rel = &#34;nofollow noopener noreferrer&#34;
		&gt;
	
	&lt;span&gt;
		&lt;strong&gt;released&lt;/strong&gt;
	&lt;/span&gt;
&lt;/a&gt; the second beta that includes a c# compiler which is CLI compliant and also supports the same PE system as .NET. What is more interesting is that there are two stacks of APIs one for the Unix and its variants and the other is of the .NET Framework (v 1.1) to support ASP.NET including WebForms, WebServices, among other things.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>About a month after releasing the first beta, Mono <a
	
		href = "http://www.go-mono.com/archive/beta2/beta2.html"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>released</strong>
	</span>
</a> the second beta that includes a c# compiler which is CLI compliant and also supports the same PE system as .NET. What is more interesting is that there are two stacks of APIs one for the Unix and its variants and the other is of the .NET Framework (v 1.1) to support ASP.NET including WebForms, WebServices, among other things.</p>
<p>The beta2 includes:</p>
<ul>
<li>ECMA CLI-based virtual execution system.</li>
<li>Java VM: allows Java and .NET code to run side-by-side. It contains the latest release of IKVM.</li>
<li>Optimising compiler for x86, PowerPC, SPARC and S390 based architectures.</li>
<li>Just-in-Time (JIT) and Ahead-of-Time (AOT) compilation modes supported.</li>
<li>A new, faster interpreter for the above platforms and also for StrongARM and HPPA.</li>
<li>Support for Linux, MacOS X, Windows, Solaris and HP-UX operating systems. C# 1.0 compiler.</li>
<li>Development toolchain.</li>
<li>API documentation browser, with Wiki-like capabilities.</li>
<li>Embeddable runtime: make your application scriptable and extensible with C# or any other .NET language using our embedding API.</li>
</ul>
<p>The following are in preview and not supported at this time, but from my interpretation of the read, should be out soon after Whidbey ships (for some of them):</p>
<ul>
<li>Preview C# 2.0 compiler with generics support (gmcs).</li>
<li>Generics-enabled virtual machine.</li>
<li>System.Windows.Forms.</li>
<li>Mono Basic compiler.</li>
</ul>
<p>It is important to note that some key pieces are also missing which one should keep in mind when deciding when to do pick a framework:</p>
<ul>
<li>COM support of any kind in Unix or Windows.</li>
<li>EnterpriseServices is only a set of stub routines.</li>
<li>Windows.Forms is only available as a preview, and it is not meant for production use.</li>
<li>Code Access Security (CAS) is not supported: missing in the runtime and class libraries.</li>
</ul>
<p>I personally would be interested in seeing what the implementation of Remoting, Web Services and the Garbage Collection would be. While we are on the topic, if you have not then check out <a
	
		href = "http://www.microsoft.com/downloads/details.aspx?FamilyId=3A1C93FA-7462-47D0-8E56-8DD34C6292F0&amp;displaylang=en"
	

	

	
		target = "_blank"
		rel = "nofollow noopener noreferrer"
		>
	
	<span>
		<strong>Rotor</strong>
	</span>
</a> implementation by Microsoft which runs on Windows XP, FreeBSD and Mac OS X 10.2. I used a very early implementation of Mono (more than a year ago) when there was not much one could do, I need to take out some time now to play with this now, but was curious to know what your experience has been or if you are thinking of using this, is so how?</p>
<p><p>

    <img src="http://desigeek.com/weblog/aggbug.aspx?PostID=260" alt=""/>

</p></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
