<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-6355218471395609447</atom:id><lastBuildDate>Mon, 07 Oct 2024 04:54:34 +0000</lastBuildDate><title>Michael&#39;s Random Technology Posts</title><description>Everything about my daily life as a programmer/Electrical Engineer!</description><link>http://tech-michael.blogspot.com/</link><managingEditor>noreply@blogger.com (Michael)</managingEditor><generator>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-3131482371213156267</guid><pubDate>Thu, 07 Jan 2010 18:40:00 +0000</pubDate><atom:updated>2010-01-07T10:40:18.704-08:00</atom:updated><title>Switched to engrstephens.blogspot.com</title><description>I have switched all my accounts over to engrstehpens&lt;br /&gt;
&lt;br /&gt;
I have reposted all these blogs to my new blog!</description><link>http://tech-michael.blogspot.com/2010/01/switched-to-engrstephensblogspotcom.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4435710026368438223</guid><pubDate>Sun, 03 Jan 2010 21:55:00 +0000</pubDate><atom:updated>2010-01-03T14:00:38.471-08:00</atom:updated><title>Silverlight 4 Communicating with Matlab</title><description>&lt;p&gt;I have taken it on myself to try and expand and inspire people’s view of what a web application can do.&amp;#160; In this installment I’m leveraging Silverlight 4 and Matlab to build a simple Matlab console.&lt;/p&gt;  &lt;div style=&quot;padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c15b7088-2e11-4510-bc44-f9a60644e69e&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;div id=&quot;10423d91-23cf-42ba-8d5b-486cb5b8edab&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=p5e4GqhjYNE&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFCjeRLP2lfkwWjFO9Y1nbKlZAEx71G-jQ6hT2huga7-h7vcHXaP08CLHCmFCrKXxZrsonihNDBSbZmrCVYnpRFpvKiGFirjqf7UQHg0Fw_jcMi2JiqkGs7tRJNeZFhaky0pJglignQ0o/?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;10423d91-23cf-42ba-8d5b-486cb5b8edab&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/p5e4GqhjYNE&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/p5e4GqhjYNE&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Again I am using COM automation to communicate with Silverlight.&amp;#160; Why would anyone want to do this? Well, I’m slowly porting some Matlab code to c# so it is nice to check my code by communicating with Matlab.&amp;#160; Matlab also has an insane amount of its own functions so if you wanted to build a neural network but use Silverlight to display and distribute your code then Silverlight 4 is for you!&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Interop;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;SLMatlab&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;matlab;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            input.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            output.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            Install.Visibility = &lt;span style=&quot;color: #2b91af&quot;&gt;Visibility&lt;/span&gt;.Collapsed;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;Application&lt;/span&gt;.Current.InstallState != &lt;span style=&quot;color: #2b91af&quot;&gt;InstallState&lt;/span&gt;.Installed)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;To run this, this application must be installed, Please click install.&amp;quot;&lt;/span&gt;);&lt;br /&gt;                Install.Visibility = &lt;span style=&quot;color: #2b91af&quot;&gt;Visibility&lt;/span&gt;.Visible;&lt;br /&gt;                Connect.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;else if &lt;/span&gt;(!&lt;span style=&quot;color: #2b91af&quot;&gt;Application&lt;/span&gt;.Current.IsRunningOutOfBrowser)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;This application is installed but is running inside the browser. Please launch this from the desktop!&amp;quot;&lt;/span&gt;);&lt;br /&gt;                Connect.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;Connect_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;try&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                matlab = &lt;span style=&quot;color: #2b91af&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Matlab.Application&amp;quot;&lt;/span&gt;);&lt;br /&gt;                matlab.Visible = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;                input.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;                output.IsEnabled = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;catch &lt;/span&gt;{ }&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;input_KeyDown(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;KeyEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;try&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(e.Key == &lt;span style=&quot;color: #2b91af&quot;&gt;Key&lt;/span&gt;.Enter)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;result = matlab.Execute(input.Text);&lt;br /&gt;                    input.Text = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;                    output.Text = result.ToString() + &lt;span style=&quot;color: #2b91af&quot;&gt;Environment&lt;/span&gt;.NewLine + output.Text;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;catch &lt;/span&gt;{ }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;Install_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;App&lt;/span&gt;.Current.Install();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;UserControl &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;SLMatlab.MainPage&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Ignorable&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;d&amp;quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;DesignHeight&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;DesignWidth&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;LayoutRoot&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;White&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;*&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Install&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Install&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;0&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Install_Click&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Connect&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Connect&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;1&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;Connect_Click&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;input&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;2&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;KeyDown&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;input_KeyDown&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;output&amp;quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;UserControl&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2010/01/silverlight-communicating-with-matlab.html</link><author>noreply@blogger.com (Michael)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4695232504482929739</guid><pubDate>Thu, 24 Dec 2009 08:35:00 +0000</pubDate><atom:updated>2009-12-28T20:00:56.250-08:00</atom:updated><title>Twitter-&amp;gt;SL4-&amp;gt;Arduino Light Controller</title><description>&lt;p&gt;This is a preliminary post about a new project I just finished (a variation of &lt;a href=&quot;http://www.handelit.com/Home/Home/tabid/36/mid/592/newsid589/720/Default.aspx&quot; target=&quot;_blank&quot;&gt;CoffeeTrack&lt;/a&gt;). I wanted to test the new capabilities of Silverlight 4 and push the boundaries of what people think of as a web application.&amp;#160; I made a point to not have a server portion of my application.&amp;#160; This application only requires SL4 and a COM library (trying to avoid).&lt;/p&gt;  &lt;div style=&quot;padding-bottom: 0px; padding-left: 0px; width: 842px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:cd18d9bc-db8d-4371-806c-d41b77a05aed&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;div id=&quot;d248217c-953c-47e7-8046-6101b32a7eec&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=rV481lJNApY&amp;amp;fmt=37&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjk1cWRKut2jz5VppCXTsYrSogQw039MqmlH1OSOsaoOoBusU8joi-YdcIUjWQfvsJ_otzzGrB1bS3ttoa1CXH6uT7ybh5-bWokpASPUgffQ0kF4059bHjckUnmw91tFWioO5nt7mX9pk/?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;d248217c-953c-47e7-8046-6101b32a7eec&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;842\&amp;quot; height=\&amp;quot;703\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/rV481lJNApY&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/rV481lJNApY&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;842\&amp;quot; height=\&amp;quot;703\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;I wanted to be able to control my lights from the internet.&amp;#160; This system takes twitter posts (now possible in SL4) and interprets them as commands and commands the Arduino via COM automation. Once a command is received the web cam snaps a photo and posts that to twitter to confirm the results.&lt;/p&gt;  &lt;p&gt;The Arduino code is DEAD simple. The Arduino is linked to a wireless light controller found at Walmart for $10. I found one online that is &lt;a href=&quot;http://www.northshorecommercialdoor.com/skwswirecofo.html&quot; target=&quot;_blank&quot;&gt;similar&lt;/a&gt;.&amp;#160; I used relays to close the switches.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtosLfYbWBjXf4FtsAzaSCwPVRKZI-ib5NnOHyhmPYpAPhGhaQ99_V9bbxuaNuTOrI3qljeqK6NiY8QJGfWeCUVLJE_tQxDEewsLw5jddbHZuGBz72zi-4O9Dgt_0sGDp1NWNDPred_To/s1600-h/image3.png&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv7wJW4UpsqrbIy985o9FDP6-NULgETOOOy6KgsDHdP_AJ-y5tIuaCCMYsKVc-KITEf5ceWlJ5PIjRmlSdULyMQhCH_0EkAdQdiBrcvXSN_kWlFikFaiTjI_yQ0eVaHcj9I8WP7v6F-9c/?imgmax=800&quot; width=&quot;477&quot; height=&quot;308&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;const int ledPin1 = 13; // the pin that the LED is attached to    &lt;br /&gt;const int ledPin2 = 12; // the pin that the LED is attached to &lt;/p&gt;  &lt;p&gt;int incomingByte;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // a variable to read incoming serial data into &lt;/p&gt;  &lt;p&gt;void setup() {    &lt;br /&gt;&amp;#160; // initialize serial communication:     &lt;br /&gt;&amp;#160; Serial.begin(9600);     &lt;br /&gt;&amp;#160; // initialize the LED pin as an output:     &lt;br /&gt;&amp;#160; pinMode(ledPin1, OUTPUT);     &lt;br /&gt;&amp;#160; pinMode(ledPin2, OUTPUT);     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;void loop() {    &lt;br /&gt;&amp;#160; // see if there&#39;s incoming serial data:     &lt;br /&gt;&amp;#160; if (Serial.available() &amp;gt; 0)     &lt;br /&gt;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // read the oldest byte in the serial buffer:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; incomingByte = Serial.read();     &lt;br /&gt;&amp;#160;&amp;#160; Serial.println((char)incomingByte);     &lt;br /&gt;&amp;#160;&amp;#160; if (incomingByte == &#39;0&#39;) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; digitalWrite(ledPin1, HIGH);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay(1000);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; digitalWrite(ledPin1, LOW);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Serial.println(&amp;quot;Lights are off&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else if (incomingByte == &#39;1&#39;) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; digitalWrite(ledPin2, HIGH);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delay(1000);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; digitalWrite(ledPin2, LOW);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Serial.println(&amp;quot;Lights are on!&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160; }     &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The Silverlight 4 code is a combination of many, many different libraries. I was able to successfully talk to twitter as long as I ran as an out of browser application (dumb client access policy).&amp;#160; I used the &lt;a href=&quot;http://code.google.com/p/fjcore/&quot; target=&quot;_blank&quot;&gt;FJCore&lt;/a&gt; library to encode images to Jpeg. Special thanks to VisiFire for some &lt;a href=&quot;http://www.visifire.com/blog/2009/11/12/exporting-visifire-silverlight-chart-as-image/&quot; target=&quot;_blank&quot;&gt;helpful code&lt;/a&gt; using FJCore. I spent about 3 days working with the code from this &lt;a href=&quot;http://stackoverflow.com/questions/1015930/twitter-updateprofileimage-in-c&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt; (which works in a Console App).&amp;#160; Once I figured out how the encodings worked I was able to update a photo on twitter via Silverlight.&amp;#160; The rest of the code I stole from CoffeeTrack (stay tuned!).&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Net;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Documents;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Media;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Media.Animation;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Shapes;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Xml.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Threading;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Threading;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Net.Browser;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Media.Imaging;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;FluxJpeg.Core.Encoder;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;FluxJpeg.Core;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;XmasLightController&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;DispatcherTimer &lt;/span&gt;t = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;DispatcherTimer&lt;/span&gt;() { Interval = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;TimeSpan&lt;/span&gt;(&lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;) };&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[] currentImage = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;value = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            t.Tick += &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;EventHandler&lt;/span&gt;(t_Tick);&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;//t.Start();&lt;br /&gt;            &lt;/span&gt;MakeRequest();&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;//UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;void &lt;/span&gt;t_Tick(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            MakeRequest();&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;MakeRequest()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest &lt;/span&gt;request = (&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest&lt;/span&gt;)&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest&lt;/span&gt;.Create(&lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Uri&lt;/span&gt;(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;http://twitter.com/statuses/user_timeline/uwstephens.atom?&amp;amp;count=1&amp;quot;&lt;/span&gt;));&lt;br /&gt;            request.BeginGetResponse(&lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;AsyncCallback&lt;/span&gt;(ReadCallback), request);&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Contacting twitter&amp;quot;&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;currentcommand = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;ReadCallback(&lt;span style=&quot;color: #2b91af&quot;&gt;IAsyncResult &lt;/span&gt;asynchronousResult)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;                t.Stop();&lt;br /&gt;         &lt;br /&gt;            });&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Recieved response from twitter&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest &lt;/span&gt;request = (&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest&lt;/span&gt;)asynchronousResult.AsyncState;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebResponse &lt;/span&gt;response = (&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebResponse&lt;/span&gt;)request.EndGetResponse(asynchronousResult);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;StreamReader &lt;/span&gt;streamReader1 = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;StreamReader&lt;/span&gt;(response.GetResponseStream()))&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;resultString = streamReader1.ReadToEnd();&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;XDocument &lt;/span&gt;doc = &lt;span style=&quot;color: #2b91af&quot;&gt;XDocument&lt;/span&gt;.Parse(resultString, &lt;span style=&quot;color: #2b91af&quot;&gt;LoadOptions&lt;/span&gt;.SetBaseUri | &lt;span style=&quot;color: #2b91af&quot;&gt;LoadOptions&lt;/span&gt;.SetLineInfo);&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af&quot;&gt;XElement&lt;/span&gt;&amp;gt; elems = doc.Elements(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;entry&amp;quot;&lt;/span&gt;).ToList();&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;oldcommand = currentcommand;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;var &lt;/span&gt;a &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;doc.Descendants().ToList())&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(a.Name.LocalName == &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;entry&amp;quot;&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;if&lt;/span&gt;(value!=a.Value)&lt;br /&gt;                        {&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;                        }&lt;br /&gt;                        value=a.Value;&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;action&amp;quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;else if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;cut&amp;quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown&quot;&gt;2&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;else if &lt;/span&gt;(a.Value.ToLower().Contains(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;snap&amp;quot;&lt;/span&gt;))&lt;br /&gt;                        {&lt;br /&gt;                            currentcommand = &lt;span style=&quot;color: brown&quot;&gt;3&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                {&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(currentcommand == &lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Start command received&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                            input.Text = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;;&lt;br /&gt;                            SendMessage();&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;else if &lt;/span&gt;(currentcommand == &lt;span style=&quot;color: brown&quot;&gt;2&lt;/span&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Stop command received&amp;quot;&lt;/span&gt;);&lt;br /&gt;                            input.Text = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;;&lt;br /&gt;                            SendMessage();&lt;br /&gt;                            UpdateTwitterImage();&lt;br /&gt;&lt;br /&gt;                        }&lt;br /&gt;                    &lt;br /&gt;                });&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                {&lt;br /&gt;                    t.Start();&lt;br /&gt;                });&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public void &lt;/span&gt;WriteText(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;txt)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;() { &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.outputWindow.Text += &lt;span style=&quot;color: #2b91af&quot;&gt;Environment&lt;/span&gt;.NewLine + txt; });&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public void &lt;/span&gt;UpdateTwitterImage()&lt;br /&gt;        {&lt;br /&gt;            WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Updating image&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(currentImage == &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;) { &lt;span style=&quot;color: blue&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;String &lt;/span&gt;avatarUrl = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;http://twitter.com/account/update_profile_image.xml&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;String &lt;/span&gt;file = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;xmas&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;imageType = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;png&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;WebRequest&lt;/span&gt;.RegisterPrefix(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;http://&amp;quot;&lt;/span&gt;, System.Net.Browser.&lt;span style=&quot;color: #2b91af&quot;&gt;WebRequestCreator&lt;/span&gt;.ClientHttp);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;contentBoundaryBase = &lt;span style=&quot;color: #2b91af&quot;&gt;DateTime&lt;/span&gt;.Now.Ticks.ToString(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;x&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;beginContentBoundary = &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;--{0}\r\n&amp;quot;&lt;/span&gt;, contentBoundaryBase);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;var &lt;/span&gt;contentDisposition = &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Content-Disposition:form-data); name=\&amp;quot;image\&amp;quot;); filename=\&amp;quot;{0}\&amp;quot;\r\nContent-Type: image/{1}\r\n\r\n&amp;quot;&lt;/span&gt;, file, imageType);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;var &lt;/span&gt;endContentBoundary = &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;\r\n--{0}--\r\n&amp;quot;&lt;/span&gt;, contentBoundaryBase);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[] fileBytes = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Encoding &lt;/span&gt;encoding = &lt;span style=&quot;color: #2b91af&quot;&gt;Encoding&lt;/span&gt;.UTF8;&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream &lt;/span&gt;test = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream&lt;/span&gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[] data = encoding.GetBytes(beginContentBoundary);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = encoding.GetBytes(contentDisposition);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = currentImage;&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            data = encoding.GetBytes(endContentBoundary);&lt;br /&gt;            test.Write(data, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, data.Length);&lt;br /&gt;            fileBytes = test.GetBuffer();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;var &lt;/span&gt;req = (&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest&lt;/span&gt;)&lt;span style=&quot;color: #2b91af&quot;&gt;HttpWebRequest&lt;/span&gt;.Create(&lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Uri&lt;/span&gt;(avatarUrl, &lt;span style=&quot;color: #2b91af&quot;&gt;UriKind&lt;/span&gt;.Absolute));&lt;br /&gt;            req.ContentType = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;multipart/form-data;boundary=&amp;quot; &lt;/span&gt;+ contentBoundaryBase;&lt;br /&gt;            req.AllowReadStreamBuffering = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            req.Method = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            req.UseDefaultCredentials = &lt;span style=&quot;color: blue&quot;&gt;false&lt;/span&gt;;&lt;br /&gt;            req.Credentials = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;NetworkCredential&lt;/span&gt;(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;uwstephens&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;File&lt;/span&gt;.WriteAllBytes(&lt;span style=&quot;color: #a31515&quot;&gt;@&amp;quot;C:\Users\michael\Documents\test.txt&amp;quot;&lt;/span&gt;, fileBytes);&lt;br /&gt;            req.BeginGetRequestStream(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;IAsyncResult &lt;/span&gt;result)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;Stream &lt;/span&gt;reqStream = req.EndGetRequestStream(result);&lt;br /&gt;                reqStream.Write(fileBytes, &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, fileBytes.Length);&lt;br /&gt;                &lt;span style=&quot;color: green&quot;&gt;//reqStream.wr(fileBytes, 0, fileBytes.Length);&lt;br /&gt;                &lt;/span&gt;reqStream.Close();&lt;br /&gt;                req.BeginGetResponse(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;IAsyncResult &lt;/span&gt;result1)&lt;br /&gt;                {&lt;br /&gt;                    WriteText(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Image updated&amp;quot;&lt;/span&gt;);&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(req.HaveResponse)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;try&lt;br /&gt;                        &lt;/span&gt;{&lt;br /&gt;                            &lt;span style=&quot;color: #2b91af&quot;&gt;WebResponse &lt;/span&gt;resp = req.EndGetResponse(result1);&lt;br /&gt;                            WriteText(resp.Headers[&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;status&amp;quot;&lt;/span&gt;]);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;catch &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;Exception &lt;/span&gt;e) { WriteText(e.Message); }&lt;br /&gt;                    }&lt;br /&gt;                }, req);&lt;br /&gt;&lt;br /&gt;            }, &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;VideoCaptureDevice &lt;/span&gt;webcam = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;CaptureSource &lt;/span&gt;captureSource = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;loadCamera_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            webcam = &lt;span style=&quot;color: #2b91af&quot;&gt;CaptureDeviceConfiguration&lt;/span&gt;.GetDefaultVideoCaptureDevice();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;CaptureDeviceConfiguration&lt;/span&gt;.RequestDeviceAccess())&lt;br /&gt;            {&lt;br /&gt;                captureSource = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;CaptureSource&lt;/span&gt;();&lt;br /&gt;                captureSource.VideoCaptureDevice = webcam;&lt;br /&gt;                captureSource.Start();&lt;br /&gt;                captureSource.AsyncCaptureImage(snap);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public void &lt;/span&gt;snap(&lt;span style=&quot;color: #2b91af&quot;&gt;WriteableBitmap &lt;/span&gt;b)&lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;            currentImage = GetImageStream(b).GetBuffer();&lt;br /&gt;            webcamImg.Source = b;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;File&lt;/span&gt;.WriteAllBytes(&lt;span style=&quot;color: #a31515&quot;&gt;@&amp;quot;C:\Users\michael\Documents\test\test.png&amp;quot;&lt;/span&gt;, currentImage);&lt;br /&gt;            captureSource.AsyncCaptureImage(snap);&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;        &lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;Reads raster information from WriteableBitmap&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;bitmap&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;WriteableBitmap&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;Array of bytes&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;public static byte&lt;/span&gt;[][,] ReadRasterInformation(&lt;span style=&quot;color: #2b91af&quot;&gt;WriteableBitmap &lt;/span&gt;bitmap)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;width = bitmap.PixelWidth;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;height = bitmap.PixelHeight;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;bands = &lt;span style=&quot;color: brown&quot;&gt;3&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[][,] raster = &lt;span style=&quot;color: blue&quot;&gt;new byte&lt;/span&gt;[bands][,];&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;i = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;; i &amp;lt; bands; i++)&lt;br /&gt;            {&lt;br /&gt;                raster[i] = &lt;span style=&quot;color: blue&quot;&gt;new byte&lt;/span&gt;[width, height];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;row = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;; row &amp;lt; height; row++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;column = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;; column &amp;lt; width; column++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;pixel = bitmap.Pixels[width * row + column];&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;)(pixel &amp;gt;&amp;gt; &lt;span style=&quot;color: brown&quot;&gt;16&lt;/span&gt;);&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;)(pixel &amp;gt;&amp;gt; &lt;span style=&quot;color: brown&quot;&gt;8&lt;/span&gt;);&lt;br /&gt;                    raster[&lt;span style=&quot;color: brown&quot;&gt;2&lt;/span&gt;][column, row] = (&lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;)pixel;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;return &lt;/span&gt;raster;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;Encode raster information to MemoryStream&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;raster&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;Raster information (Array of bytes)&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;colorSpace&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;ColorSpace used&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;public static &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream &lt;/span&gt;EncodeRasterInformationToStream(&lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[][,] raster, &lt;span style=&quot;color: #2b91af&quot;&gt;ColorSpace &lt;/span&gt;colorSpace)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;ColorModel &lt;/span&gt;model = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;ColorModel &lt;/span&gt;{ colorspace = &lt;span style=&quot;color: #2b91af&quot;&gt;ColorSpace&lt;/span&gt;.RGB };&lt;br /&gt;            FluxJpeg.Core.&lt;span style=&quot;color: #2b91af&quot;&gt;Image &lt;/span&gt;img = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;FluxJpeg.Core.&lt;span style=&quot;color: #2b91af&quot;&gt;Image&lt;/span&gt;(model, raster);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;//Encode the Image as a JPEG&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream &lt;/span&gt;stream = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream&lt;/span&gt;();&lt;br /&gt;            FluxJpeg.Core.Encoder.&lt;span style=&quot;color: #2b91af&quot;&gt;JpegEncoder &lt;/span&gt;encoder = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;FluxJpeg.Core.Encoder.&lt;span style=&quot;color: #2b91af&quot;&gt;JpegEncoder&lt;/span&gt;(img, &lt;span style=&quot;color: brown&quot;&gt;100&lt;/span&gt;, stream);&lt;br /&gt;            encoder.Encode();&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;// Back to the start&lt;br /&gt;            &lt;/span&gt;stream.Seek(&lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;SeekOrigin&lt;/span&gt;.Begin);&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;return &lt;/span&gt;stream;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// &lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;Get image MemoryStream from WriteableBitmap&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name=&amp;quot;bitmap&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;WriteableBitmap&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color: gray&quot;&gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;public static &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MemoryStream &lt;/span&gt;GetImageStream(&lt;span style=&quot;color: #2b91af&quot;&gt;WriteableBitmap &lt;/span&gt;bitmap)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;[][,] raster = ReadRasterInformation(bitmap);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;return &lt;/span&gt;EncodeRasterInformationToStream(raster, &lt;span style=&quot;color: #2b91af&quot;&gt;ColorSpace&lt;/span&gt;.RGB);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;com;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;serialConnect_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            com = System.Windows.Interop.&lt;span style=&quot;color: #2b91af&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;ActiveXperts.ComPort&amp;quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;count = com.GetDeviceCount();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;            com.Device = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;COM1&amp;quot;&lt;/span&gt;;&lt;br /&gt;            com.Open();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MessageBox&lt;/span&gt;.Show(com.GetErrorDescription(com.LastError));&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;buffer = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            System.Threading.&lt;span style=&quot;color: #2b91af&quot;&gt;Thread &lt;/span&gt;t = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Thread&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;ThreadStart&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;while &lt;/span&gt;(&lt;span style=&quot;color: brown&quot;&gt;1 &lt;/span&gt;== &lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    com.Sleep(&lt;span style=&quot;color: brown&quot;&gt;200&lt;/span&gt;);&lt;br /&gt;                    buffer = com.ReadString();&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(buffer == &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;) { &lt;span style=&quot;color: blue&quot;&gt;continue&lt;/span&gt;; }&lt;br /&gt;                    serialOutput.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                    {&lt;br /&gt;                        serialOutput.Text += &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;\r\n&amp;quot; &lt;/span&gt;+ buffer;&lt;br /&gt;                    });&lt;br /&gt;                }&lt;br /&gt;            }));&lt;br /&gt;            t.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;void &lt;/span&gt;SendMessage()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(com != &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;char &lt;/span&gt;c &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;input.Text)&lt;br /&gt;                {&lt;br /&gt;                    com.WriteByte((&lt;span style=&quot;color: blue&quot;&gt;byte&lt;/span&gt;)c);&lt;br /&gt;                }&lt;br /&gt;                input.Text = &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;input_KeyUp(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;KeyEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(e.Key == &lt;span style=&quot;color: #2b91af&quot;&gt;Key&lt;/span&gt;.Enter)&lt;br /&gt;            {&lt;br /&gt;                SendMessage();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2009/12/twitter-light-controller.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv7wJW4UpsqrbIy985o9FDP6-NULgETOOOy6KgsDHdP_AJ-y5tIuaCCMYsKVc-KITEf5ceWlJ5PIjRmlSdULyMQhCH_0EkAdQdiBrcvXSN_kWlFikFaiTjI_yQ0eVaHcj9I8WP7v6F-9c/s72-c?imgmax=800" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-2986251276038064013</guid><pubDate>Sun, 13 Dec 2009 00:00:00 +0000</pubDate><atom:updated>2009-12-12T16:00:19.733-08:00</atom:updated><title>Silverlight talking to Arduino</title><description>&lt;p&gt;This is an initial rough post, but I have managed to get Silverlight 4 beta talking to an ActiveXperts COM+ interface that talks to an Arduino over a serial connection.&lt;/p&gt; &lt;p&gt;Here is my first attempt to do a video of it. Looks like I’m going to need to learn how to make a screencast.&lt;/p&gt; &lt;div style=&quot;padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:d403c786-35db-4ceb-9cb1-c5e139343d78&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;div id=&quot;e220a5dc-be04-432f-9ac9-e043c645a4cf&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=iftRQuikrjk&amp;amp;feature=youtube_gdata&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1w0RQQewPMVN0fcp582PMWhZ7tDCr-ozV1ak8-81xHsNMN0GP2xTErCfBVO01sGpQ2CAPqff4BJFdnb3wj6QCwvMQ3y9ao1uONNAXGwXI-JFFoXKqMt_9QW6xU4d60GnNeWrtichtMDk/?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;e220a5dc-be04-432f-9ac9-e043c645a4cf&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/iftRQuikrjk&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/iftRQuikrjk&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSejOum-4gU1QTvNJ9ihCLDfZoMZRkXO9qy1_zmrCyUlajb5HvB4VLOmu5hjg6a4-n2nbYTip8Ecz0eLyv6Qo1tbpdzCkHbi3HL72eKEahUXZJD9L1cVclZQh8F_EbnMFzk96JP9xIK0Y/s1600-h/image%5B3%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfFAUssr3LXeEA9rakFZy2XbcQO2_-6D_bsFFlrlUk5DnFrjNYy2H9RDb9sGk9QFZS1_oll6Lb38zxWPTyrY-jVZwogmpZDF8aW0cCjzJMoO-ck5d3wW7WuRng0uoqP7bHAYoZiY8Tkd0/?imgmax=800&quot; width=&quot;752&quot; height=&quot;587&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The C# code.&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Net;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Documents;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Input;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Media;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Media.Animation;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Shapes;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Windows.Interop;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Threading;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;TestSerial&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MainPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public &lt;/span&gt;MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;button1_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;App&lt;/span&gt;.Current.InstallState == &lt;span style=&quot;color: #2b91af&quot;&gt;InstallState&lt;/span&gt;.NotInstalled)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;App&lt;/span&gt;.Current.Install();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;com;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;button2_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;           com=&lt;span style=&quot;color: #2b91af&quot;&gt;ComAutomationFactory&lt;/span&gt;.CreateObject(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;ActiveXperts.ComPort&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;dynamic &lt;/span&gt;count = com.GetDeviceCount();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder &lt;/span&gt;sb = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;            &lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;dynamic&lt;/span&gt;&amp;gt; devices = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;dynamic&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;for&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;i=&lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;;i&amp;lt;=&lt;span style=&quot;color: brown&quot;&gt;9&lt;/span&gt;;i++)&lt;br /&gt;            {&lt;br /&gt;                devices.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;COM&quot; &lt;/span&gt;+ i);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;i = &lt;span style=&quot;color: brown&quot;&gt;0&lt;/span&gt;; i &amp;lt; count; i++)&lt;br /&gt;            {&lt;br /&gt;                    devices.Add(com.GetDevice(i));&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;            devicelst.ItemsSource = devices;&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;private void &lt;/span&gt;button3_Click(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;//string device = devicelst.SelectedItem.ToString();&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(devicelst.SelectedItem == &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;) { &lt;span style=&quot;color: #2b91af&quot;&gt;MessageBox&lt;/span&gt;.Show(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;Please pick a port&quot;&lt;/span&gt;); &lt;span style=&quot;color: blue&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;            com.Device = devicelst.SelectedItem.ToString();&lt;br /&gt;            com.Open();&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MessageBox&lt;/span&gt;.Show(com.GetErrorDescription(com.LastError));&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;buffer = &lt;span style=&quot;color: #a31515&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;br /&gt;            System.Threading.&lt;span style=&quot;color: #2b91af&quot;&gt;Thread &lt;/span&gt;t = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Thread&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;ThreadStart&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;while &lt;/span&gt;(&lt;span style=&quot;color: brown&quot;&gt;1 &lt;/span&gt;== &lt;span style=&quot;color: brown&quot;&gt;1&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    com.Sleep(&lt;span style=&quot;color: brown&quot;&gt;200&lt;/span&gt;);&lt;br /&gt;                    buffer = com.ReadString();&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(buffer == &lt;span style=&quot;color: #a31515&quot;&gt;&quot;&quot;&lt;/span&gt;) { com.Close(); &lt;span style=&quot;color: blue&quot;&gt;return&lt;/span&gt;; }&lt;br /&gt;                    tb.Dispatcher.BeginInvoke(&lt;span style=&quot;color: blue&quot;&gt;delegate&lt;/span&gt;()&lt;br /&gt;                    {&lt;br /&gt;                        tb.Text += &lt;span style=&quot;color: #a31515&quot;&gt;&quot;\r\n&quot; &lt;/span&gt;+ com.ReadString();&lt;br /&gt;                    });&lt;br /&gt;                }&lt;br /&gt;            }));&lt;br /&gt;            t.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;The Xaml.&lt;br /&gt;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;UserControl &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Class&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;TestSerial.MainPage&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;mc&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Ignorable&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;d&quot;&lt;br /&gt;    &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;DesignHeight&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;300&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;DesignWidth&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;400&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;LayoutRoot&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;White&quot;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ColumnDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Auto&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;RowDefinition&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Install&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Left&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button1&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;75&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button1_Click&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;0&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Get Devices&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Left&quot;  &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button2&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;75&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button2_Click&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ComboBox &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;devicelst&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;1,0,0,0&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;1&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;ComboBox&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Button &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Connect&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;3&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;1&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;23&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Left&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button3&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Top&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;button3_Click&quot;/&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;tb&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.ColumnSpan&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;3&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;2&quot; &lt;/span&gt;&lt;span style=&quot;color: red&quot;&gt;VerticalScrollBarVisibility&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;Visible&quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;TextBox&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #a31515&quot;&gt;UserControl&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;/*&lt;br&gt;&amp;nbsp; ASCII table&lt;br&gt; Prints out byte values in all possible formats:&amp;nbsp; &lt;br&gt; * as raw binary values&lt;br&gt; * as ASCII-encoded decimal, hex, octal, and binary values&lt;br&gt; For more on ASCII, see &lt;a href=&quot;http://www.asciitable.com&quot;&gt;http://www.asciitable.com&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/ASCII&quot;&gt;http://en.wikipedia.org/wiki/ASCII&lt;/a&gt;&lt;br&gt; The circuit:&amp;nbsp; No external hardware needed.&lt;br&gt; created 2006&lt;br&gt; by Nicholas Zambetti &lt;br&gt; modified 18 Jan 2009&lt;br&gt; by Tom Igoe&lt;br&gt; &amp;lt;&lt;a href=&quot;http://www.zambetti.com&quot;&gt;http://www.zambetti.com&lt;/a&gt;&amp;gt; &lt;br&gt; */&lt;br&gt;void setup() &lt;br&gt;{ &lt;br&gt;&amp;nbsp; Serial.begin(9600); &lt;br /&gt;&lt;p&gt;&amp;nbsp; // prints title with ending line break &lt;br&gt;&amp;nbsp; Serial.println(&quot;ASCII Table ~ Character Map&quot;); &lt;br&gt;} &lt;br /&gt;&lt;p&gt;// first visible ASCIIcharacter &#39;!&#39; is number 33:&lt;br&gt;int thisByte = 33; &lt;br&gt;// you can also write ASCII characters in single quotes.&lt;br&gt;// for example. &#39;!&#39; is the same as 33, so you could also use this:&lt;br&gt;//int thisByte = &#39;!&#39;;&amp;nbsp; &lt;p&gt;void loop() &lt;br&gt;{ &lt;br&gt;&amp;nbsp; // prints value unaltered, i.e. the raw binary version of the &lt;br&gt;&amp;nbsp; // byte. The serial monitor interprets all bytes as &lt;br&gt;&amp;nbsp; // ASCII, so 33, the first number,&amp;nbsp; will show up as &#39;!&#39; &lt;br&gt;&amp;nbsp; Serial.print(thisByte, BYTE);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp; Serial.print(&quot;, dec: &quot;); &lt;br&gt;&amp;nbsp; // prints value as string as an ASCII-encoded decimal (base 10).&lt;br&gt;&amp;nbsp; // Decimal is the&amp;nbsp; default format for Serial.print() and Serial.println(),&lt;br&gt;&amp;nbsp; // so no modifier is needed:&lt;br&gt;&amp;nbsp; Serial.print(thisByte);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp; // But you can declare the modifier for decimal if you want to.&lt;br&gt;&amp;nbsp; //this also works if you uncomment it: &lt;br /&gt;&lt;p&gt;&amp;nbsp; // Serial.print(thisByte, DEC);&amp;nbsp; &lt;p&gt;&amp;nbsp; Serial.print(&quot;, hex: &quot;); &lt;br&gt;&amp;nbsp; // prints value as string in hexadecimal (base 16):&lt;br&gt;&amp;nbsp; Serial.print(thisByte, HEX);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp; Serial.print(&quot;, oct: &quot;); &lt;br&gt;&amp;nbsp; // prints value as string in octal (base 8);&lt;br&gt;&amp;nbsp; Serial.print(thisByte, OCT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp; Serial.print(&quot;, bin: &quot;); &lt;br&gt;&amp;nbsp; // prints value as string in binary (base 2) &lt;br&gt;&amp;nbsp; // also prints ending line break:&lt;br&gt;&amp;nbsp; Serial.println(thisByte, BIN);&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp; // if printed last visible character &#39;~&#39; or 126, stop: &lt;br&gt;&amp;nbsp; if(thisByte == 126) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // you could also use if (thisByte == &#39;~&#39;) {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This loop loops forever and does nothing&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(true) { &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt;&amp;nbsp; } &lt;br&gt;&amp;nbsp; // go on to the next character&lt;br&gt;&amp;nbsp; thisByte++;&amp;nbsp; &lt;br&gt;} &lt;br /&gt;  </description><link>http://tech-michael.blogspot.com/2009/12/silverlight-talking-to-arduino.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfFAUssr3LXeEA9rakFZy2XbcQO2_-6D_bsFFlrlUk5DnFrjNYy2H9RDb9sGk9QFZS1_oll6Lb38zxWPTyrY-jVZwogmpZDF8aW0cCjzJMoO-ck5d3wW7WuRng0uoqP7bHAYoZiY8Tkd0/s72-c?imgmax=800" height="72" width="72"/><thr:total>18</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-7303998164041477746</guid><pubDate>Thu, 09 Jul 2009 21:55:00 +0000</pubDate><atom:updated>2009-07-09T14:55:53.579-07:00</atom:updated><title>Entity framework Eager Loading error</title><description>&lt;p&gt;If you you get this &lt;/p&gt;  &lt;p&gt;&amp;quot;The execution of this query requires the APPLY operator, which is not supported in versions of SQL Server earlier than SQL Server 2005.&amp;quot;&lt;/p&gt;  &lt;p&gt;We ran into this because we generated it via a 2000 database and threw an error.&lt;/p&gt;  &lt;p&gt;Load the edmx file in notepad.&lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;   &lt;br /&gt;&amp;lt;edmx:Edmx Version=&amp;quot;1.0&amp;quot; xmlns:edmx=&amp;quot;&lt;a href=&quot;http://schemas.microsoft.com/ado/2007/06/edmx&amp;quot;&quot;&gt;http://schemas.microsoft.com/ado/2007/06/edmx&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;!-- EF Runtime content --&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;edmx:Runtime&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- SSDL content --&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;edmx:StorageModels&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Schema Namespace=&amp;quot;TableModels.Store&amp;quot; Alias=&amp;quot;Self&amp;quot; Provider=&amp;quot;System.Data.SqlClient&amp;quot; &lt;strong&gt;&lt;font color=&quot;#ff0000&quot;&gt;ProviderManifestToken=&amp;quot;2000&amp;quot;&lt;/font&gt;&lt;/strong&gt; xmlns:store=&amp;quot;&lt;a href=&quot;http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator&amp;quot;&quot;&gt;http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator&amp;quot;&lt;/a&gt; xmlns=&amp;quot;&lt;a href=&quot;http://schemas.microsoft.com/ado/2006/04/edm/ssdl&amp;quot;&quot;&gt;http://schemas.microsoft.com/ado/2006/04/edm/ssdl&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Now all we need to do is change the 2000 to 2005!&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2009/07/entity-framework-eager-loading-error.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-8084564052011034634</guid><pubDate>Fri, 26 Jun 2009 17:38:00 +0000</pubDate><atom:updated>2009-06-26T10:38:45.671-07:00</atom:updated><title>Keep an eye on a reference.</title><description>&lt;p&gt;When debugging I often find myself wishing I could just watch a single object throughout its life cycle. This is especially useful for debugging state problems (I’m thinking detached row error). Someone is modifying the state of your object and you need to figure out who. The problem lies in scoping. Every time you step in you have to change the watch window statement to track your objects state. &lt;/p&gt;  &lt;p&gt;What you end up with is a nasty watch window.&lt;/p&gt;  &lt;p&gt;The immediate window comes to the rescue!&amp;#160; Simply declare a variable with a globally unique name (DataRow watchMyRow=_dr;) for example. Then go to the watch window and add a watch for watchMyRow.&amp;#160; watchMyRow is always in scope. So now step through at your leisure and find the offending entry point and step deeper. Its that easy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So we will start with a simple test program that calls methods with several different names and types.&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;ConsoleApplication2&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MyObject &lt;/span&gt;val = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MyObject&lt;/span&gt;();&lt;br /&gt;            Method1(val);&lt;br /&gt;            Method2(val);&lt;br /&gt;            Method3(val);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Method1(&lt;span style=&quot;color: #2b91af&quot;&gt;MyObject &lt;/span&gt;obj)&lt;br /&gt;        {&lt;br /&gt;            obj.state = 1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Method2(&lt;span style=&quot;color: #2b91af&quot;&gt;MyObject &lt;/span&gt;myobj)&lt;br /&gt;        {&lt;br /&gt;            myobj.state = 2;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Method3(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;obj)&lt;br /&gt;        {&lt;br /&gt;            ((&lt;span style=&quot;color: #2b91af&quot;&gt;MyObject&lt;/span&gt;)obj).state = 3;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;MyObject&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public int &lt;/span&gt;state = 5;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;We set our break points.&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBcFnByftxVnbnT6kW1JufTvHKptpLNyIJDrjyXagTpclaacJRh_gzphzZKfZ6IunXqZLv1kiK988zN-aVGV1wKRd9k1d9qm5HJWe74b5QiY8Bhmol6XURf0ef6-9-dYpZn1pvZ_MMTaU/s1600-h/image%5B15%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-UYdPvCV3zL1Z1Tk2qDtqO71MVgphANJj_EnSUhy-ivWB1YvRfSZ33o14Dv93ExZZRvolcoVFepjelwiccK1NYww6Ra5LsCSObzxn_eXTOLkw4BACysY7R98RKzSH5o8Dfel34R_zyrw/?imgmax=800&quot; width=&quot;328&quot; height=&quot;327&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And at the end of the cycle our watch window looks like this!&amp;#160; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXc1AJm8Bby3hfZUmKlg0Z6e-orhT-99Qf15XN8MO6xBYUNEWB5SrKJUYCwfGTOFqeAsrO2aW6HC5WIT0vWija3UoeveJEED_tFQaEFAxFKR4x3wLMNCjSBAHLMmmLQWRAMm47DG3bsuo/s1600-h/image%5B14%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHCssrAsBtAOUpLD-Iisz4HyK-AUl_FFGCMtwj7KlgfodOMPkFKYAWNrFDVtvMo1yfFLbXBACeOddQ9-kzIe4ZOBUL-gwEqCc4NeNHTt8BrZfKHBr-EaFg_LYqyZJVkikOaRRbC92FKpA/?imgmax=800&quot; width=&quot;470&quot; height=&quot;118&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;All to track the same value on the same object!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The real problem is that with events thrown into the mix it becomes impossible to track state on some foreign object (Detached Row I loathe you!).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now lets do the same example with the immediate window.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Our first break point gets hit. We type MyObject WATCHMYOBJECT=obj; into the immediate window.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPSb-_xlKaEk0jFv5wZSKrFE-CsjTRLGmfAKlVnvWcaj11wBRRNuz05z9JyGoo9UadCTRfKZup1_AjGpyBKKSGC_OQBZbEAP178Z0iRH33uCpda8q3QPWCV8NrUKCBlhMg-ocZk0MriUk/s1600-h/image%5B9%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwOxIMCzgwmWs1qwpxKlpkx2jnDT8YIRu0FrfY62GxKRpuAWRImyA_o-KnpKgFbjhS91jUFIQzJ3P4DaXWTTiTb-QgECpo7fMcRdru0r97erRxnVudSNI4zO6c0uc-cbRgA0IE_tgnhYw/?imgmax=800&quot; width=&quot;244&quot; height=&quot;118&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Next I add that variable to the watch window.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAVab_XHyALFg8U3yNOeKNGq4M8IjG90cLEliMpH8tuSQb-tHrx7GRH_IzN1V47kbCPNmdoisrZsDIuCqZ6Sa4OOlINZYEYNJLUphnSKTCxa23H27pTIzjaxV_D-lPk_49AOGvKmQwNxw/s1600-h/image%5B16%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh_NFi9U1DtV_itD5SRybmInDVX2_o5Czu6Z19eZK0BQTvPdvjNTnZQ65dxBeYzyPlVMnXqurvFhKvmxSJc8QKx4sI_nqKDraQeBVQdF0tWKc8FXIgPiJ0V9u08BMsZazArViBYL8ubxE/?imgmax=800&quot; width=&quot;558&quot; height=&quot;95&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Finnally after the many function calls this is the result.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzGtnhkG5IKnxjMVteBJ627ow5qqDmK7TCA9yTz2Vys-IDsTibwjLO-hL_j-ynOq4L4eoJIqjuiJBrvfXYyD9AkTO54CgIBOuce1GwQ5S01YYyPMI3qtQOA_PY8usp3aQFxeDHYyrfyMs/s1600-h/image%5B20%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7bY8KcV_B6QbUr7JsW14Kyo8pXHhEKmlB4vGeo2EgrJ5Z7sUICEwofuzJVbqCEeoJqTUkMttqt9b2JDmJROjC4fU6g9FJZ1AwWMuWkjsG3r-L4l918z9nBnOoQt_t01T22sA4-_x3fnY/?imgmax=800&quot; width=&quot;457&quot; height=&quot;232&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I only had to watch one object the entire time! Now if I can only build a VSADDIN to automate this process (evil grin)!&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2009/06/keep-eye-on-reference.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-UYdPvCV3zL1Z1Tk2qDtqO71MVgphANJj_EnSUhy-ivWB1YvRfSZ33o14Dv93ExZZRvolcoVFepjelwiccK1NYww6Ra5LsCSObzxn_eXTOLkw4BACysY7R98RKzSH5o8Dfel34R_zyrw/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-3934395299608266536</guid><pubDate>Tue, 26 May 2009 23:59:00 +0000</pubDate><atom:updated>2009-05-26T16:59:26.753-07:00</atom:updated><title>Silverlight WCF Inner-Exceptions</title><description>&lt;p&gt; Found a quick and dirty way to do WCF exceptions in silverlight &lt;a title=&quot;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightws&amp;amp;DownloadId=3473&quot; href=&quot;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightws&amp;amp;DownloadId=3473&quot;&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightws&amp;amp;DownloadId=3473&lt;/a&gt; .&amp;#160; The problem is that it doesn’t do inner-exceptions.&lt;/p&gt;  &lt;p&gt;I changed the raw fault exception around a bit to get inner exceptions working.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;    &lt;span style=&quot;color: blue&quot;&gt;public static &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;RawFaultException &lt;/span&gt;BuildRawFaultException(&lt;span style=&quot;color: #2b91af&quot;&gt;XmlDictionaryReader &lt;/span&gt;reader)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt; messages = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt; stacktraces = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt;();          &lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;while &lt;/span&gt;(reader.ReadToFollowing(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Message&amp;quot;&lt;/span&gt;))&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;message = reader.ReadElementContentAsString();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;stackTrace = reader.ReadElementContentAsString(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;StackTrace&amp;quot;&lt;/span&gt;, reader.NamespaceURI);&lt;br /&gt;            messages.Add(message);&lt;br /&gt;            stacktraces.Add(stackTrace);           &lt;br /&gt;        }&lt;br /&gt;        &lt;span style=&quot;color: #2b91af&quot;&gt;RawFaultException &lt;/span&gt;e = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;i = 0; i &amp;lt; messages.Count; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(e == &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;) { e = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;RawFaultException&lt;/span&gt;(messages[i]) { stackTrace = stacktraces[i] }; }&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;else &lt;/span&gt;{ e = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;RawFaultException&lt;/span&gt;(messages[i], e) { stackTrace = stacktraces[i] }; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;return &lt;/span&gt;e;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2009/05/silverlight-wcf-inner-exceptions.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4260787651601888121</guid><pubDate>Tue, 12 May 2009 01:00:00 +0000</pubDate><atom:updated>2009-05-11T18:00:12.017-07:00</atom:updated><title>Flag enums</title><description>&lt;p&gt;I was working on a project that needed to use flag enums to store state.&amp;nbsp; Flag enums are great, except after 2^15 the numbers get hard to calculate. I resorted to using excel to generate the enum code for me, that is until I learned I can do math expressions inside of enums! What I forgot is that 2^0 is not equivalent to Math.Pow(2,0).&amp;nbsp; This is when I discovered my old friend shift.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;TestEnum&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #2b91af&quot;&gt;oldway&lt;/span&gt;.All);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #2b91af&quot;&gt;newway&lt;/span&gt;.All);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style=&quot;color: #2b91af&quot;&gt;Flags&lt;/span&gt;]&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;enum &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;oldway&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        None=0,&lt;br /&gt;        One=1,&lt;br /&gt;        Two=2,&lt;br /&gt;        Three=4,&lt;br /&gt;        Four=8,&lt;br /&gt;        All=15&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    [&lt;span style=&quot;color: #2b91af&quot;&gt;Flags&lt;/span&gt;]&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;enum &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;newway&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        None = 0,&lt;br /&gt;        One = 1&amp;lt;&amp;lt;0,&lt;br /&gt;        Two = 1&amp;lt;&amp;lt;1,&lt;br /&gt;        Three = 1&amp;lt;&amp;lt;2,&lt;br /&gt;        Four = 1&amp;lt;&amp;lt;3,&lt;br /&gt;        All = (1&amp;lt;&amp;lt;4) - 1&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As you can see they both work the same :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOUgSplGhhupIgypVPcYvv2TsHgsnbX0syqDWfzwNKthXzu8ButovrRtFZ0vC17dcoz69oYEMkzI8LRzVRP85PoPPWsDNDNU6oonns8vTvrPU_leAa_vK29iHMUfZ41sc3siiIAx_3YT4/s1600-h/image%5B2%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px&quot; height=&quot;68&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZA8vL0ys4Tf9YDpCOMXnDFXH7iLvMjBI-xxzOb17dSgZ2wZMfEbbzE_GW1Tb01Ue52FlwB0fF4YhJPlkwbE7NJ28SqZHydQbXEcwjpBFc-7myOJjgLUvTKsLMaqwvDiGK6jhMd_TspWQ/?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2009/05/flag-enums.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZA8vL0ys4Tf9YDpCOMXnDFXH7iLvMjBI-xxzOb17dSgZ2wZMfEbbzE_GW1Tb01Ue52FlwB0fF4YhJPlkwbE7NJ28SqZHydQbXEcwjpBFc-7myOJjgLUvTKsLMaqwvDiGK6jhMd_TspWQ/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-3827934963628461705</guid><pubDate>Thu, 23 Apr 2009 19:42:00 +0000</pubDate><atom:updated>2009-04-23T12:42:29.305-07:00</atom:updated><title>State Bag for all objects</title><description>&lt;p&gt;Extension methods are very powerful, but sometimes you need to store state on the object you are processing in an extension method.&amp;nbsp; The problem is implementing state maintenance in a static method can be a real chore.&amp;nbsp; Not to mention when you only want to track state on an object you can’t.&amp;nbsp; I wrote this quick and dirty state maintenance set of extension methods.&amp;nbsp; There is a caveat that I cannot fix at the time of writing.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff0000&quot;&gt;If you store data in the statebag, you need someway of knowing when the object is getting destroyed so that you can manually call ClearVariables.&amp;nbsp; If you do not clear the variables the values will be left in the statebag FOREVER causing massive memory leaks!&amp;nbsp; I would like a way to alleviate this if anyone has any ideas.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff0000&quot;&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;StateBagTest&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;o = &lt;span style=&quot;color: blue&quot;&gt;new object&lt;/span&gt;();&lt;br /&gt;            o.Set(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;newvar&quot;&lt;/span&gt;, 5);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;number = (&lt;span style=&quot;color: blue&quot;&gt;int&lt;/span&gt;)o.Get(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;newvar&quot;&lt;/span&gt;);&lt;br /&gt;            o.ClearVariables(); &lt;span style=&quot;color: green&quot;&gt;//very very important!&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public static class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;StateBag&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;int&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;, &lt;span style=&quot;color: blue&quot;&gt;object&lt;/span&gt;&amp;gt;&amp;gt; _stateBag = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;int&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;, &lt;span style=&quot;color: blue&quot;&gt;object&lt;/span&gt;&amp;gt;&amp;gt;();&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public static void &lt;/span&gt;Set(&lt;span style=&quot;color: blue&quot;&gt;this object &lt;/span&gt;obj, &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;var, &lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;value)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;hashcode = obj.GetHashCode();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(!_stateBag.ContainsKey(hashcode))&lt;br /&gt;            {&lt;br /&gt;                _stateBag.Add(hashcode, &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;, &lt;span style=&quot;color: blue&quot;&gt;object&lt;/span&gt;&amp;gt;());&lt;br /&gt;            }&lt;br /&gt;            _stateBag[hashcode][var] = value;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;public static object &lt;/span&gt;Get(&lt;span style=&quot;color: blue&quot;&gt;this object &lt;/span&gt;obj, &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;var)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;hashcode = obj.GetHashCode();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(_stateBag.ContainsKey(hashcode) &amp;amp;&amp;amp; _stateBag[hashcode].ContainsKey(var))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;return &lt;/span&gt;_stateBag[hashcode][var];&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;return null&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: green&quot;&gt;//Really need to call this when your object is done using the state bag, which may be hard for some objects you are extending!&lt;br /&gt;        &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;public static void &lt;/span&gt;ClearVariables(&lt;span style=&quot;color: blue&quot;&gt;this object &lt;/span&gt;obj)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;hashcode = obj.GetHashCode();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(_stateBag.ContainsKey(hashcode))&lt;br /&gt;            {&lt;br /&gt;                _stateBag[hashcode] = &lt;span style=&quot;color: blue&quot;&gt;null&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2009/04/state-bag-for-all-objects.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-8993919217018761332</guid><pubDate>Thu, 18 Dec 2008 17:33:00 +0000</pubDate><atom:updated>2008-12-18T09:33:48.621-08:00</atom:updated><title>Mono.Cecil Profiler</title><description>&lt;p&gt;So we have been trying to develop a profiler for a long time.&amp;#160; All the posts seem to require an inordinate amount ofMSIL knowledge or to know C++ to interface with the CLR directly.&amp;#160; Both of these approaches were painful.&amp;#160; All I wanted to do was inject a Profile.Start and Profile.End into our code base for every class giving us a simple profiler.&amp;#160; With Mono.Cecil I could do exactly that, and without Mono installed on my computer.&amp;#160; Go get the original example from the &lt;a href=&quot;http://www.mono-project.com/Cecil:FAQ&quot;&gt;Mono.Cecil website&lt;/a&gt; or just download it directly &lt;a href=&quot;http://evain.net/public/cecil_faq_samples.zip&quot;&gt;here.&lt;/a&gt; There is a dll called lib.&amp;#160; I just added that to my solution in VS2008 and wrote the following simple profiler.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;pathBin = &lt;span style=&quot;color: #a31515&quot;&gt;@&amp;quot;C:\Users\michael\Documents\Visual Studio 2008\Projects\ConsoleApplication1\ConsoleApplication2\bin\Debug\ConsoleApplication2.exe&amp;quot;&lt;/span&gt;;&lt;br /&gt;            &lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MethodInfo &lt;/span&gt;startMethod =  &lt;span style=&quot;color: blue&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;ProfileClient&lt;/span&gt;).GetMethod(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Start&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Type&lt;/span&gt;[] { &lt;span style=&quot;color: blue&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;) });&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;MethodInfo &lt;/span&gt;endMethod =&lt;span style=&quot;color: blue&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;ProfileClient&lt;/span&gt;).GetMethod(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;End&amp;quot;&lt;/span&gt;, &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Type&lt;/span&gt;[] { &lt;span style=&quot;color: blue&quot;&gt;typeof&lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;) });&lt;br /&gt;            &lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;AssemblyDefinition &lt;/span&gt;assembly = &lt;span style=&quot;color: #2b91af&quot;&gt;AssemblyFactory&lt;/span&gt;.GetAssembly(pathBin);&lt;br /&gt;            &lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;TypeDefinition &lt;/span&gt;type &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;assembly.MainModule.Types)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(type.Name != &lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;lt;Module&amp;gt;&amp;quot;&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: #2b91af&quot;&gt;MethodDefinition &lt;/span&gt;method &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;type.Methods)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;CilWorker &lt;/span&gt;worker = method.Body.CilWorker;&lt;br /&gt;                        &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;sentence = method.Name;&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;MethodReference &lt;/span&gt;start=assembly.MainModule.Import(startMethod);&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;MethodReference &lt;/span&gt;end= assembly.MainModule.Import(endMethod);&lt;br /&gt;&lt;br /&gt;                        &lt;span style=&quot;color: green&quot;&gt;//Creates the MSIL instruction for inserting the sentence&lt;br /&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;startSentence = worker.Create(&lt;span style=&quot;color: #2b91af&quot;&gt;OpCodes&lt;/span&gt;.Ldstr, sentence);&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;endSentence= worker.Create(&lt;span style=&quot;color: #2b91af&quot;&gt;OpCodes&lt;/span&gt;.Ldstr, sentence);&lt;br /&gt;&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af&quot;&gt;Instruction&lt;/span&gt;&amp;gt; parameters = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #2b91af&quot;&gt;Instruction&lt;/span&gt;&amp;gt;();&lt;br /&gt;                       &lt;br /&gt;                        &lt;span style=&quot;color: green&quot;&gt;//Creates the CIL instruction for calling the start and end &lt;br /&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;callStart= worker.Create(&lt;span style=&quot;color: #2b91af&quot;&gt;OpCodes&lt;/span&gt;.Call, start);&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;callEnd= worker.Create(&lt;span style=&quot;color: #2b91af&quot;&gt;OpCodes&lt;/span&gt;.Call, end);&lt;br /&gt;&lt;br /&gt;                        &lt;span style=&quot;color: green&quot;&gt;//-2 cause you need to go before the return opcode&lt;br /&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;lastinstruction= method.Body.Instructions[method.Body.Instructions.Count-2];&lt;br /&gt;                        worker.InsertAfter(lastinstruction, endSentence);&lt;br /&gt;                        worker.InsertAfter(endSentence, callEnd);&lt;br /&gt;&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;Instruction &lt;/span&gt;firstinstruction = method.Body.Instructions[0];&lt;br /&gt;                        worker.InsertBefore(firstinstruction, startSentence);&lt;br /&gt;                        worker.InsertAfter(startSentence, callStart);&lt;br /&gt;&lt;br /&gt;                     &lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;AssemblyFactory&lt;/span&gt;.SaveAssembly(assembly, pathBin.Replace(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;.exe&amp;quot;&lt;/span&gt;,&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;)+&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;-new-.exe&amp;quot;&lt;/span&gt;);&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;public class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;ProfileClient&lt;br /&gt;   &lt;/span&gt;{&lt;br /&gt;       &lt;span style=&quot;color: blue&quot;&gt;public static void &lt;/span&gt;Start(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;method,&lt;span style=&quot;color: blue&quot;&gt;params object&lt;/span&gt;[] args)&lt;br /&gt;       {&lt;br /&gt;           &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;Start &amp;quot; &lt;/span&gt;+ method+&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span style=&quot;color: blue&quot;&gt;public static void &lt;/span&gt;End(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;method, &lt;span style=&quot;color: blue&quot;&gt;params object&lt;/span&gt;[] args)&lt;br /&gt;       {&lt;br /&gt;           &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;&amp;gt;End &amp;quot;&lt;/span&gt;+ method);&lt;br /&gt;       }&lt;br /&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515&quot;&gt;&amp;quot;My Code2 &amp;quot;&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So if you build the last program and run it, it will output&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My Code2&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Once you run the second console application and then run ConsoleApplication2-new-.exe you will get &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Start Main&amp;gt; &lt;br /&gt;  &lt;br /&gt;My Code2 ? &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&amp;gt;End Main&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I’m still not sure where the ? comes from but for now this simple profiler works and will be the basis of our more complex profiler we are planning to start constructing.&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2008/12/monocecil-profiler.html</link><author>noreply@blogger.com (Michael)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-7399775545777876838</guid><pubDate>Tue, 02 Sep 2008 15:40:00 +0000</pubDate><atom:updated>2008-09-02T08:40:01.280-07:00</atom:updated><title>Remove SVN</title><description>&lt;p&gt;There is probably an easier way to do this.&amp;nbsp; I accidentally tried to add a&amp;nbsp; large directory to a svn repo.&amp;nbsp; It failed after 3 hours leaving half my directory with .svn folders. Since Tortoise SVN didn&#39;t seem to have an option to unbind a folder I wrote this powershell script.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;Courier New&quot;&gt;function removesvn&lt;br&gt;{&lt;br&gt;&amp;nbsp; dir -path $pwd.Path -recurse -force | where{&amp;nbsp;&amp;nbsp;&amp;nbsp; $_.Name -eq &quot;.svn&quot;} | rm -recurse -force&lt;br&gt;}&lt;br&gt;removesvn&lt;/font&gt;  </description><link>http://tech-michael.blogspot.com/2008/09/remove-svn.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4395928175450935917</guid><pubDate>Tue, 26 Aug 2008 16:48:00 +0000</pubDate><atom:updated>2008-08-26T09:50:17.450-07:00</atom:updated><title>Convert Bitmaps to transparent png</title><description>&lt;p&gt;Not much to say.&amp;nbsp; This was really useful with an icon set we were using.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Drawing;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Drawing.Imaging;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;ConsoleApplication2&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;directory=&lt;span style=&quot;color: #a31515&quot;&gt;@&quot;c:\temp\&quot;&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] files = &lt;span style=&quot;color: #2b91af&quot;&gt;Directory&lt;/span&gt;.GetFiles(directory, &lt;span style=&quot;color: #a31515&quot;&gt;&quot;*.bmp&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;path &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;files)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;Bitmap &lt;/span&gt;bmp = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Bitmap&lt;/span&gt;(path); &lt;br /&gt;                bmp.MakeTransparent(&lt;span style=&quot;color: #2b91af&quot;&gt;Color&lt;/span&gt;.Magenta);&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;FileInfo &lt;/span&gt;fi = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;FileInfo&lt;/span&gt;(path);&lt;br /&gt;                bmp.Save(directory + fi.Name.Replace(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;.bmp&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515&quot;&gt;&quot;&quot;&lt;/span&gt;) + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;.png&quot;&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;ImageFormat&lt;/span&gt;.Png);&lt;br /&gt;                bmp.Dispose();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2008/08/convert-bitmaps-to-transparent-png.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-3066943104158613317</guid><pubDate>Fri, 01 Aug 2008 17:28:00 +0000</pubDate><atom:updated>2008-08-01T10:29:18.189-07:00</atom:updated><title>How Asp.Net Requests Page</title><description>&lt;p&gt;As our company delved into asynchronous transfers we noticed that we would get a random application hang every now and then.&amp;nbsp; We suspected and tried to hunt down a threading problem and along the way we learned some interesting things.&lt;/p&gt; &lt;p&gt;First: Asp.Net queues requests by session to prevent this problem.&amp;nbsp; Here is our test. First we built a new Page Class with some diagnostic info.&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;WebApplication3&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;TestPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;Page&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;      &lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;protected override void &lt;/span&gt;OnLoad(&lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;strt\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;Load&quot; &lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());         &lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;base&lt;/span&gt;.OnLoad(e);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot; stop\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;Load&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;protected override void &lt;/span&gt;OnPreRender(&lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;  strt\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;PreR&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());         &lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;base&lt;/span&gt;.OnPreRender(e);          &lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;   stop\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;PreR&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());&lt;br /&gt;         &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;Then I setup the Default Page to add iframes to the source.  &lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;_Default &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;TestPage&lt;br /&gt;   &lt;/span&gt;{&lt;br /&gt;       &lt;span style=&quot;color: blue&quot;&gt;protected void &lt;/span&gt;Page_Load(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;       {&lt;br /&gt;           &lt;span style=&quot;color: #2b91af&quot;&gt;Thread&lt;/span&gt;.Sleep(1000);&lt;br /&gt;           &lt;span style=&quot;color: blue&quot;&gt;for &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;int &lt;/span&gt;i = 0; i &amp;lt; 20; i++)&lt;br /&gt;           {&lt;br /&gt;               &lt;span style=&quot;color: #2b91af&quot;&gt;HtmlGenericControl &lt;/span&gt;control = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;HtmlGenericControl&lt;/span&gt;(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;iframe&quot;&lt;/span&gt;);&lt;br /&gt;               control.Attributes.Add(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;src&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515&quot;&gt;&quot;WebForm1.aspx&quot;&lt;/span&gt;);&lt;br /&gt;               &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.Form.Controls.Add(control);&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;Some notes here.  The Thread.Sleep makes sure that the debugger is attached and responding well enough to record things correctly.&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;Finally WebForm1.aspx.  This thing doesnt do anything but inherit from the TestPage with diagnostic information.&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;WebApplication3&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;public partial class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;WebForm1 &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;TestPage&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;protected void &lt;/span&gt;Page_Load(&lt;span style=&quot;color: blue&quot;&gt;object &lt;/span&gt;sender, &lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;pre class=&quot;code&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;/font&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Ok so the first run we make sure &lt;span style=&quot;color: red&quot;&gt;EnableSessionState&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;True&quot;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;What this is supposed to do is make sure that only one request happens at a time.&amp;nbsp; Here is the log.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face=&quot;Courier New&quot; size=&quot;1&quot;&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 53576792&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 53576792&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 53576792&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 53576792&lt;br&gt;&lt;/font&gt;&lt;font size=&quot;1&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;font color=&quot;#ff0000&quot;&gt;&lt;strong&gt;&lt;u&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46058179&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63986957&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46058179&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46058179&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46058179&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63986957&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63986957&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63986957&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58678956&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58678956&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58678956&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58678956&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 49300528&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 49300528&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 49300528&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 49300528&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8423152&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8423152&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8423152&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8423152&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 32996321&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 32996321&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 32996321&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 32996321&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 28848020&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 28848020&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 28848020&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 28848020&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 66504299&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 66504299&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 66504299&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 66504299&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 47123389&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 47123389&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 47123389&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 47123389&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60889463&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60889463&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60889463&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60889463&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 16515137&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 16515137&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 16515137&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 16515137&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 10378086&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 10378086&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 10378086&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 10378086&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58791803&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58791803&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58791803&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58791803&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45784774&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45784774&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45784774&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45784774&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 31806433&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 31806433&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 31806433&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 31806433&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 17398656&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 17398656&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 17398656&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 17398656&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 62912648&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 62912648&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 62912648&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 62912648&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 50833736&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 50833736&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 50833736&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 50833736&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46154167&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46154167&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46154167&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46154167&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63078365&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63078365&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63078365&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63078365&lt;/font&gt;&lt;/font&gt; &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;So the first request does not seem to be blocking additional requests as seen in red.&amp;nbsp; Whoops!&amp;nbsp; We didn&#39;t use Session so asp.net hasn&#39;t made us a session (this is retarded I know). &lt;br /&gt;&lt;p&gt;So we made a change to TestPage.&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;public class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;TestPage &lt;/span&gt;: &lt;span style=&quot;color: #2b91af&quot;&gt;Page&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;      &lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;protected override void &lt;/span&gt;OnLoad(&lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            Session[&lt;span style=&quot;color: #a31515&quot;&gt;&quot;dumb&quot;&lt;/span&gt;] = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;strt\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;Load&quot; &lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());         &lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;base&lt;/span&gt;.OnLoad(e);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot; stop\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;Load&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;protected override void &lt;/span&gt;OnPreRender(&lt;span style=&quot;color: #2b91af&quot;&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;  strt\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;PreR&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());         &lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;base&lt;/span&gt;.OnPreRender(e);          &lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Debug&lt;/span&gt;.Print(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;   stop\t&quot; &lt;/span&gt;+ &lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetType().Name + &lt;span style=&quot;color: #a31515&quot;&gt;&quot;PreR&quot;&lt;/span&gt;+ &lt;span style=&quot;color: #a31515&quot;&gt;&quot; &quot; &lt;/span&gt;+&lt;span style=&quot;color: blue&quot;&gt;this&lt;/span&gt;.GetHashCode());&lt;br /&gt;         &lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;} &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;See now we set [&quot;Dumb&quot;]=true. &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;Ok so here is the next trace with that fix. &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;font face=&quot;cou&quot; size=&quot;1&quot;&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 6100737&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 6100737&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 6100737&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 6100737&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 6299240&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 6299240&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 6299240&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 6299240&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 50224890&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 50224890&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 50224890&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 50224890&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 51844981&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 51844981&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 51844981&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 51844981&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 54842390&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 54842390&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 54842390&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 54842390&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 44186085&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 44186085&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 44186085&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 44186085&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 307537&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 307537&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 307537&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 307537&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 36642531&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 36642531&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 36642531&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 36642531&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8761922&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8761922&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8761922&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8761922&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 44283204&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 44283204&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 44283204&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 44283204&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 37119060&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 37119060&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 37119060&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 37119060&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46442220&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 46442220&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46442220&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 46442220&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 51538364&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 51538364&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 51538364&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 51538364&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 65304700&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 65304700&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 65304700&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 65304700&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45154067&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45154067&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45154067&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45154067&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 24313979&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 24313979&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 24313979&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 24313979&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 30823158&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 30823158&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 30823158&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 30823158&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 32261192&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 32261192&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 32261192&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 32261192&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 5695327&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 5695327&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 5695327&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 5695327&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 14547257&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 14547257&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 14547257&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 14547257&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 65008279&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 65008279&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 65008279&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 65008279&lt;/font&gt;&lt;/p&gt;So great!&amp;nbsp; It finally works.&amp;nbsp; Now lets break it on purpose.&amp;nbsp; We setup this line in both pages.&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: red&quot;&gt;EnableSessionState&lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;=&quot;ReadOnly&quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Here is our log we can see that the first 2 requests to webform1 are made at the same time causing&amp;nbsp; a thread exception. &lt;br /&gt;&lt;p&gt;&lt;font face=&quot;cou&quot; size=&quot;1&quot;&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 22177797&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxLoad 22177797&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 22177797&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; default_aspxPreR 22177797&lt;br&gt;&lt;/font&gt;&lt;font size=&quot;1&quot;&gt;&lt;font face=&quot;cou&quot;&gt;&lt;strong&gt;&lt;u&gt;&lt;font color=&quot;#ff0000&quot;&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58758044&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60402358&lt;br&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60402358&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 58758044&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60402358&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58758044&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60402358&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 58758044&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 33970112&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 33970112&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 33970112&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 33970112&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 12544008&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 12544008&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 12544008&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 12544008&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 47231162&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 47231162&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 47231162&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 47231162&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63638306&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 63638306&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63638306&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 63638306&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 57701674&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 57701674&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 57701674&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 57701674&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 29746117&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 29746117&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 29746117&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 29746117&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 3884878&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 3884878&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 3884878&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 3884878&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45476154&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 45476154&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45476154&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 45476154&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 42317455&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 42317455&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 42317455&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 42317455&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60918874&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 60918874&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60918874&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 60918874&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 54806812&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 54806812&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 54806812&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 54806812&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 59055457&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 59055457&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 59055457&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 59055457&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 64646201&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 64646201&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 64646201&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 64646201&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 62849758&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 62849758&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 62849758&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 62849758&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 26235852&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 26235852&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 26235852&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 2135755&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 2135755&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 26235852&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 2135755&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 2135755&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 6565686&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 6565686&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 6565686&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 6565686&lt;br&gt;strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8372655&lt;br&gt;stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxLoad 8372655&lt;br&gt;&amp;nbsp; strt&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8372655&lt;br&gt;&amp;nbsp;&amp;nbsp; stop&amp;nbsp;&amp;nbsp;&amp;nbsp; webform1_aspxPreR 8372655&lt;/font&gt;&lt;/font&gt; &lt;br /&gt;&lt;p&gt;So in summary asp.net only makes one request at a time as long as you initialize the session, set the EnableSessionState=True (which is the default).&amp;nbsp; So if you think Asp.Net is causing threading issues think again. &lt;br /&gt;  </description><link>http://tech-michael.blogspot.com/2008/08/how-aspnet-requests-page.html</link><author>noreply@blogger.com (Michael)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-8768997615558692227</guid><pubDate>Mon, 28 Jul 2008 19:22:00 +0000</pubDate><atom:updated>2008-07-28T12:24:21.132-07:00</atom:updated><title>Where are the label&amp;#39;s in the world.</title><description>&lt;p&gt;This is much less a post of something cool I&#39;ve done and much more a post about where are all the labels.&amp;nbsp; Google gave us labels for things like gmail and google docs right?&amp;nbsp; Sharepoint capitalized on the idea an added their own online labeling.&amp;nbsp; Vista lets you label a few types of files.&amp;nbsp; When will someone write a general purpose labeling system that can be used by all the cool new desktop search engines out there?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I&#39;m waiting...........&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2008/07/where-are-label-in-world.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-3823264726777601588</guid><pubDate>Thu, 24 Jul 2008 20:32:00 +0000</pubDate><atom:updated>2008-07-24T13:35:18.215-07:00</atom:updated><title>Upward Bound Robots : A success</title><description>&lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/89iroc/SIjng-pbzhI/AAAAAAAAAH4/ljvdJWu1kyE/image%5B3%5D.png&quot;&gt;&lt;img style=&quot;border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px&quot; height=&quot;178&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/89iroc/SIjnhb4PemI/AAAAAAAAAH8/n8bkjJFyGoY/image_thumb.png&quot; width=&quot;244&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;A while back I posted about building a cheap robot for a high school summer camp.&amp;nbsp; Well the camp is over and I think it was pretty successful.&amp;nbsp; I was able to build 9 robots for under $30 a piece.&amp;nbsp; Each robot used an Atmel Butterfly and cheap remote control car.&amp;nbsp; I will have more ongoing information about how these cars work and how to make your own, but for now enjoy the circle of bots :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/89iroc/SIjm6sKhaNI/AAAAAAAAAHw/r0wULU_brBU/image%5B3%5D.png&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;227&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/89iroc/SIjm7PzKuDI/AAAAAAAAAH0/HYVDAxQz_ss/image_thumb%5B1%5D.png&quot; width=&quot;244&quot; align=&quot;left&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2008/07/upward-bound-robots-success.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/89iroc/SIjnhb4PemI/AAAAAAAAAH8/n8bkjJFyGoY/s72-c/image_thumb.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-81935643064284427</guid><pubDate>Wed, 23 Jul 2008 15:29:00 +0000</pubDate><atom:updated>2008-07-23T08:29:52.869-07:00</atom:updated><title>Where are the digital engineering notebooks?</title><description>&lt;p&gt;I am a strong proponent of making everything in my life digital.&amp;nbsp; I own a tablet PC and spend most of my time working on engineering projects on the computer.&amp;nbsp; One thing that always drives me nuts is printing out stuff just to go into a engineering notebook.&amp;nbsp; First I&#39;m waisting paper, second its not the write medium for an entire source code system.&amp;nbsp; Where are digital engineering notebooks?&amp;nbsp; &lt;/p&gt; &lt;p&gt;I propose that someone starts a company that is basically a limited access subversion repository ran by lawyers and IT specialist.&amp;nbsp; Client can use Tortoise SVN or the like to synch their directory changes to the server.&amp;nbsp; Someone can even have rules in place that require digital signatures before commits can happen.&amp;nbsp; If a patent dispute ever happens the company can show the directory in its state as of a certain disputed date.&lt;/p&gt; &lt;p&gt;What this gives you:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;A way to backup your files&lt;/li&gt; &lt;li&gt;A clean medium for digital files like source code&lt;/li&gt; &lt;li&gt;Worry free notebook maintenance&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The company could make a good deal of money charging for space and charging a lot of money for engineering audits.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well just a thought!&lt;/p&gt;  </description><link>http://tech-michael.blogspot.com/2008/07/where-are-digital-engineering-notebooks.html</link><author>noreply@blogger.com (Michael)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-6030838592334229574</guid><pubDate>Wed, 23 Jul 2008 15:18:00 +0000</pubDate><atom:updated>2008-07-23T10:21:35.227-07:00</atom:updated><title>C# Code to cleanup Startmenu</title><description>&lt;p&gt;I image my machine once a semester to clear off all the garbage I installed over the term. (I use partimage in case anyone cares).&amp;nbsp; Anyway I always have unsused shortcuts left in my startmenu since that lives on my d:\ drive which is where my data and profile are.&amp;nbsp; I wrote the code below to nuke bad shortcuts and empty shortcut directories.&amp;nbsp; It doesn&#39;t get all the uninstall files and readme links but its good enough! &lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;using &lt;/span&gt;IWshRuntimeLibrary;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: blue&quot;&gt;namespace &lt;/span&gt;ConsoleApplication12&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: blue&quot;&gt;class &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;Program&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style=&quot;color: blue&quot;&gt;static void &lt;/span&gt;Main(&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;path = &lt;span style=&quot;color: #a31515&quot;&gt;@&quot;D:\Michael\Start Menu\&quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;WshShell &lt;/span&gt;shell = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;WshShell&lt;/span&gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;[] files = &lt;span style=&quot;color: #2b91af&quot;&gt;Directory&lt;/span&gt;.GetFiles(path, &lt;span style=&quot;color: #a31515&quot;&gt;&quot;*.lnk&quot;&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;SearchOption&lt;/span&gt;.AllDirectories);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;Directory&lt;/span&gt;.CreateDirectory(&lt;span style=&quot;color: #a31515&quot;&gt;@&quot;C:\oldshortcuts&quot;&lt;/span&gt;);&lt;br /&gt;            &lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt; directories = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: blue&quot;&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;file &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;files)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: #2b91af&quot;&gt;IWshShortcut &lt;/span&gt;link = shell.CreateShortcut(file) &lt;span style=&quot;color: blue&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;IWshShortcut&lt;/span&gt;;&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(!System.IO.&lt;span style=&quot;color: #2b91af&quot;&gt;File&lt;/span&gt;.Exists(link.TargetPath))&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.Write(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;Broken Shortcut&quot;&lt;/span&gt;);&lt;br /&gt;                    &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(file);&lt;br /&gt;                    directories.Add(&lt;span style=&quot;color: #2b91af&quot;&gt;Path&lt;/span&gt;.GetDirectoryName(file));&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;try&lt;br /&gt;                    &lt;/span&gt;{&lt;br /&gt;                        System.IO.&lt;span style=&quot;color: #2b91af&quot;&gt;File&lt;/span&gt;.Copy(file, &lt;span style=&quot;color: #2b91af&quot;&gt;Path&lt;/span&gt;.Combine(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;C:\\oldshortcuts&quot;&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;Path&lt;/span&gt;.GetFileName(file)), &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;);&lt;br /&gt;                        System.IO.&lt;span style=&quot;color: #2b91af&quot;&gt;File&lt;/span&gt;.Delete(file);&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;catch &lt;/span&gt;{ &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;Error copying file and deleting file. Press any key to continue&quot;&lt;/span&gt;); &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.ReadLine(); }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style=&quot;color: green&quot;&gt;//now delete the old shortcuts&lt;br /&gt;            &lt;/span&gt;&lt;span style=&quot;color: blue&quot;&gt;foreach &lt;/span&gt;(&lt;span style=&quot;color: blue&quot;&gt;string &lt;/span&gt;dir &lt;span style=&quot;color: blue&quot;&gt;in &lt;/span&gt;directories)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(!&lt;span style=&quot;color: #2b91af&quot;&gt;Directory&lt;/span&gt;.Exists(dir)) { &lt;span style=&quot;color: blue&quot;&gt;continue&lt;/span&gt;; }&lt;span style=&quot;color: green&quot;&gt;//we already deleted this!&lt;br /&gt;                &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;DirectoryInfo &lt;/span&gt;info = &lt;span style=&quot;color: blue&quot;&gt;new &lt;/span&gt;&lt;span style=&quot;color: #2b91af&quot;&gt;DirectoryInfo&lt;/span&gt;(dir);&lt;br /&gt;                &lt;span style=&quot;color: blue&quot;&gt;if &lt;/span&gt;(info.GetFiles(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;*&quot;&lt;/span&gt;, &lt;span style=&quot;color: #2b91af&quot;&gt;SearchOption&lt;/span&gt;.AllDirectories).Length == 0)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;try&lt;br /&gt;                    &lt;/span&gt;{&lt;br /&gt;                        info.Delete(&lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;);&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.Write(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;Deleting directory&quot;&lt;/span&gt;);&lt;br /&gt;                        &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(info.FullName);&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span style=&quot;color: blue&quot;&gt;catch &lt;/span&gt;{ &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515&quot;&gt;&quot;Error Removing Directory. Press any key to continue&quot;&lt;/span&gt;); &lt;span style=&quot;color: #2b91af&quot;&gt;Console&lt;/span&gt;.ReadLine(); }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;  </description><link>http://tech-michael.blogspot.com/2008/07/c-code-to-cleanup-startmenu.html</link><author>noreply@blogger.com (Michael)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4295730025776408680</guid><pubDate>Wed, 02 Jul 2008 17:57:00 +0000</pubDate><atom:updated>2008-12-08T15:50:34.375-08:00</atom:updated><title>Debugging in IronPythonStudio with PythonEngine</title><description>&lt;p&gt;&lt;br /&gt;I was charged by the company I work for to add a code editor to our IronPython Application scripting engine.  Originally the code editor was supposed to just be a friendly IDE.. but I wanted break points too.  PythonStudio seemed like a good choice since it ships as a standalone application and can do Python breakpoints via our friend &quot;the red dot&quot; for break points.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Here is how it all goes together.  First I created a class library in PythonStudio.  I set a break point in PythonStudio so that my source looks like this.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHK0gIonH334FObMiNUmDoBiHGOKbgPAJ_umEOe7hXlJ1ji-dyVbXaZsgsnIbHB0gegGIWgux-VAc7Y9MrSVq9YMqNbPtUDQ3w0O7ZEmmuYfd4X6vixiQKPqQMH_bqREXki0CDmkynFM/s320/image002.jpg&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The next thing I did was build a simple PythonEngine host in C#.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            EngineOptions eo = new EngineOptions();&lt;br /&gt;            eo.ClrDebuggingEnabled = true; //this is important!  this turns on debugging!&lt;br /&gt;            PythonEngine pe = new PythonEngine(eo);&lt;br /&gt;            //create the class def from our code base&lt;br /&gt;            pe.ExecuteFile(@&quot;D:\Michael\My Documents\IronPython Studio\ClassLibrary1\ClassLibrary1\Class.py&quot;);&lt;br /&gt;            pe.Import(&quot;System&quot;);&lt;br /&gt;            pe.Import(&quot;System.Diagnostics&quot;);&lt;br /&gt;            Console.WriteLine(&quot;Please attach Python Studio if you want breakpoints :)&quot;);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;            pe.ExecuteToConsole(&quot;a=Class()&quot;);&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;You can see that I execute the python file from the directory that iron python studio placed its file.  If you run this file in or out of debugging nothing happens.  Why?  Visual Studio doesn’t know about the breakpoints in your iron python studio project yet. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The final piece is attaching PythonStudio to the c# application where the python engine lives.  To do this run the application without debugging.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPVBJ2q_R9zlSFIb5MZwTCpFXBmBpalgi9AM1uM4gIzVPsMjvecpT6exNE-DLiPT5c194wa5yvTxvGT0UY79GMwXnoeivsJe5tH1ekPkJIEFlJkNu0SahEDYq1RO8Fm79SkDM0C7H6JPE/s320/image004.jpg&quot; &gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Then in PythonStudio Attach PythonStudio to your c# application.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8UFRLqc9TQkRiNArhAxZKJ10tufxKOjRo93hdXsXcpb6V2rygcMjFbL7xNSDUfdOUTF8zzOn3kOZEOj2bxC2-vP6rvVLJM-pq_TfDUP3jI4NX0cjpMXZFMo_tOkvJEz_Udbw8fNqMH6k/s320/image006.jpg&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;As you can see my project was called ConsoleApplication9.exe [Don’t we all love the visual studio generated project names]&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3HMgBL3_pkEo1CAXRdIpbJSnYSPaATM2JfsZqCxXI3ACRKCTDsywQuCT2-bnxOm3ZhhkDcjERw0-_-bLQuAUPDI5eAXTxtZ2yF9wlV-C7MME-prZ0ecbeLYUrUzuGIN_9YRJMghV3jBo/s320/image008.jpg&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Hit Enter in the command window once you have attached PythonStudio and watch your break point get hit!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpP2VsaXvZUZATVrTZoImhCMAW3TnykVZ16GV559T008jyFcnjRLIOlHWgrs-iEQe4jyE80vcMAU_69FRZFgkg0VDFZzEtL8SclsZ8dyPsqjd1N0RXDgAY-wyMfAH1g_DWZqaqvwSmZHQ/s320/image010.jpg&quot;&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Hit F5 and this will be your final output.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_r7RiWx048pmCFwD7Ge-gaHIaUhEmo4H8YldfNPdvPgJhtiHe6ef33e4o8v10EMX2jFIzrLMoPnjrafvgB1njmWLwEi5AUdo1gv_miTEPXUGvJrcy_2U17fcZ1U1VFU5pdU9H_QQndpQ/s320/image012.jpg&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;As you can see *most* of the work is done for you.  All that is needed is delicate wiring of pieces and parts.  Finally a way for us all to embed scripting that is more powerful than VBA and has a better editor than VBA.&lt;br /&gt;&lt;/p&gt;</description><link>http://tech-michael.blogspot.com/2008/07/i-was-charged-by-company-i-work-for-to.html</link><author>noreply@blogger.com (Michael)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHK0gIonH334FObMiNUmDoBiHGOKbgPAJ_umEOe7hXlJ1ji-dyVbXaZsgsnIbHB0gegGIWgux-VAc7Y9MrSVq9YMqNbPtUDQ3w0O7ZEmmuYfd4X6vixiQKPqQMH_bqREXki0CDmkynFM/s72-c/image002.jpg" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-902029052566830473</guid><pubDate>Wed, 02 Jul 2008 13:47:00 +0000</pubDate><atom:updated>2008-07-02T06:49:41.384-07:00</atom:updated><title>IronPython Parser AST walker</title><description>I just thought I would post an example of an IronPython 1.1 parser for AST.  You can override tons of methods on the ASTWalker class to get the job done.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Parser p=Parser.FromString(new IronPython.Runtime.SystemState(),new CompilerContext(),&quot;a=5+10&quot;);&lt;br /&gt;            Statement e=p.ParseSingleStatement();&lt;br /&gt;            e.Walk(new ExpressionWalker());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class ExpressionWalker : IronPython.Compiler.Ast.AstWalker&lt;br /&gt;    {&lt;br /&gt;        public override void PostWalk(NameExpression node)&lt;br /&gt;        {&lt;br /&gt;            base.PostWalk(node);&lt;br /&gt;        }               &lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;</description><link>http://tech-michael.blogspot.com/2008/07/ironpython-parser-ast-walker.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-6754985871848562147</guid><pubDate>Tue, 01 Jul 2008 03:39:00 +0000</pubDate><atom:updated>2008-07-01T06:34:46.954-07:00</atom:updated><title>Python Generation using the Code Dom</title><description>I was tasked with translating a meta data scripting engine from metadata to ironpython.  Luckily, the CodeDom was the solution.  I&#39;ve gotta give those M$ credit here!&lt;br /&gt;&lt;code&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.CodeDom;&lt;br /&gt;using IronPython.CodeDom;&lt;br /&gt;using System.CodeDom.Compiler;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace TestApp&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            PythonProvider prov = new PythonProvider();&lt;br /&gt;            &lt;br /&gt;            //Create a test class&lt;br /&gt;            StringWriter sw=new StringWriter();&lt;br /&gt;            CodeTypeDeclaration targetClass = new CodeTypeDeclaration(&quot;testclass&quot;);&lt;br /&gt;            targetClass.IsClass = true;&lt;br /&gt;            &lt;br /&gt;            System.CodeDom.CodeConstructor cont = new CodeConstructor();&lt;br /&gt;            cont.Parameters.Add(new CodeParameterDeclarationExpression(&quot;int&quot;, &quot;test&quot;));&lt;br /&gt;            cont.Name = &quot;testclass&quot;;&lt;br /&gt;            targetClass.Members.Add(cont);&lt;br /&gt;&lt;br /&gt;            prov.GenerateCodeFromType(targetClass, sw, new CodeGeneratorOptions());&lt;br /&gt;            Console.Write(sw.ToString());&lt;br /&gt;            &lt;br /&gt;            //create an assignment statement&lt;br /&gt;            sw = new StringWriter();&lt;br /&gt;            CodeAssignStatement as1 = new CodeAssignStatement(new CodeVariableReferenceExpression(&quot;i&quot;), new CodePrimitiveExpression(10));&lt;br /&gt;            prov.GenerateCodeFromStatement(as1, sw, new CodeGeneratorOptions());&lt;br /&gt;            Console.Write(sw.ToString());            &lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And the output is...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class testclass(object):&lt;br /&gt;    __slots__ = []&lt;br /&gt;&lt;br /&gt;    def __init__(self, test):&lt;br /&gt;        pass&lt;br /&gt;&lt;br /&gt;i = 10&lt;br /&gt;Press any key to continue . . .&lt;br /&gt;&lt;/code&gt;</description><link>http://tech-michael.blogspot.com/2008/06/python-generation-using-code-dom.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-4857169881602228460</guid><pubDate>Tue, 27 May 2008 23:23:00 +0000</pubDate><atom:updated>2008-05-27T16:33:27.820-07:00</atom:updated><title>Useful Powershell Script</title><description>Have you ever had a list of .ISO&#39;s that you needed to burn but were tired of setting each iso to burn individually. I often have this problem when I need to burn for instance the 5 iso&#39;s that vista shipped with.  Below is a useful powershell script that will scan a directory or directories, find the ISO file, and ship it to ImgBurn.  I have it setup so that it deletes the image.  All you have to do is wait for the drive to eject your dvd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function burn()&lt;br /&gt;{&lt;br /&gt;    #get the files and ship them to burn-file&lt;br /&gt;    dir -recurse -include *.iso -path c:\,d:\,e:\ | foreach { burn-file $_.FullName }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function burn-file($filename)&lt;br /&gt;{&lt;br /&gt;    #call img burn with the nessessary arguments&lt;br /&gt;    . &quot;c:\Program Files\ImgBurn\ImgBurn.exe&quot; /mode ISOWRITE /WAITFORMEDIA /start /close /DELETEIMAGE /EJECT /SRC $filename&lt;br /&gt;    #Wait for IMGBURN to finish (right now you can only have one open at a time)&lt;br /&gt;    while ( (get-process | where{$_.ProcessName -eq &quot;ImgBurn&quot;}) -ne $null)&lt;br /&gt;    {&lt;br /&gt;        #sleep for a bit to let the processor work on burning&lt;br /&gt;        Start-Sleep –s 10&lt;br /&gt;        #tell the user what file you are still working on&lt;br /&gt;        &quot;waiting for $filename to complete&quot;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#call the burn function&lt;br /&gt;burn&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2ftech-michael.blogspot.com%2f2008%2f05%2fuseful-powershell-script.html&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2ftech-michael.blogspot.com%2f2008%2f05%2fuseful-powershell-script.html&quot; border=&quot;0&quot; alt=&quot;kick it on DotNetKicks.com&quot; /&gt;&lt;/a&gt;</description><link>http://tech-michael.blogspot.com/2008/05/useful-powershell-script.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-5181586783258034612</guid><pubDate>Wed, 21 May 2008 20:46:00 +0000</pubDate><atom:updated>2008-05-21T14:06:29.160-07:00</atom:updated><title>Taking lessons from Web 1.0 and Web 2.0 to create web sync.</title><description>With the dawn of Web 2.0 web developers have enjoyed developing rich desktop like clients and speedy flashy websites that they could have never constructed before.  Web 2.0 brought us the ability to maintain state while making requests to the server giving users the experience similar to desktop applications.  What Web 2.0 didn&#39;t provide was a good model for taking results from those requests and operating on them appropriately.  All the model controller code we wrote for Web 1.0 is now useless.  While this doesn’t sound like a problem from the beginning it is a staggering problem considering all the controls  available and that all of them have to be reimplemented in javascript.    I&#39;ll admit that there are many new libraries out there but they can be difficult to extend.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In review :&lt;br /&gt;&lt;br /&gt;Web 2.0&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Good&lt;/span&gt;&lt;br /&gt;Provides a way to make asynchronous requests&lt;br /&gt;Provides a way of requesting simple lightweight data and translating that to the screen&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Bad&lt;/span&gt;&lt;br /&gt;All the web 1.0 models have to be rewritten&lt;br /&gt;Some operations can be quite weighty on the client end&lt;br /&gt;No clean model of what should happen on the server and what should happen on the client&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I wont discuss the success of Web 1.0 but the problems were obvious.  Small state changes to a page required the user to redownload the entire page.  For some websites this is still a clean model but for most this causes bandwidth issues.&lt;br /&gt;&lt;br /&gt;My solution to take the good from both and leave the bad is to build what I am dubbing as &quot;Web Synch&quot;.   Web synch is a way to take an existing proven web 1.0 architecture like cgi, php, asp, and asp.net and give it the advantages of ajax.  This takes the models we built in web 1.0 and the asynchrounous technology we developed in web 2.0 and combines them in a  powerful new way.  This new way operates on the principal of using the web 1.0 models to render a page.  Once rendered the server sorts out what has changed.  The changes are then shipped to the client rather than the entire page.&lt;br /&gt;&lt;br /&gt;Below is a suggested implementation of web synch.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Initial request comes to the server&lt;/span&gt;&lt;br /&gt;Page is rendered&lt;br /&gt;Pages rendering is shipped as the response&lt;br /&gt;The response is cached on the server&lt;br /&gt;Page is submitted&lt;br /&gt;Submit is captured and cancelled via &quot;onsubmit&quot; event&lt;br /&gt;Form is serialized&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Ajax request made simulating Postback&lt;/span&gt;&lt;br /&gt;Second request comes to the server&lt;br /&gt;Page is rendered&lt;br /&gt;rendering compared to the previous request&lt;br /&gt;difference serialized to json (add,update,delete,move)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Page returns from ajax request&lt;/span&gt;&lt;br /&gt;JSON is deserialized&lt;br /&gt;changes are merged into the dom&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a few issues with this idea.  One, it is going to require some  memory management to store the old rendered page on the server.  Two, it will take some processing power to determine changes to the rendered page.  Finally, the only way to know that the page has changed is to have well formed html (everything must have ID&#39;s).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My first iteration will be targeted for asp.net server side and prototype on the client side.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http%3a%2f%2ftech-michael.blogspot.com%2f2008%2f05%2ftaking-lessons-from-web-10-and-web-20.html&quot;&gt;&lt;img src=&quot;http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2ftech-michael.blogspot.com%2f2008%2f05%2ftaking-lessons-from-web-10-and-web-20.html&quot; alt=&quot;kick it on DotNetKicks.com&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description><link>http://tech-michael.blogspot.com/2008/05/taking-lessons-from-web-10-and-web-20.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-1454517446232384237</guid><pubDate>Fri, 29 Feb 2008 21:23:00 +0000</pubDate><atom:updated>2008-05-28T09:20:01.029-07:00</atom:updated><title>Running Asp.Net without a webserver</title><description>If you ever need to generate web pages that are static (for reporting etc) you often find yourself emitting html.  Turns out Asp.Net is perfectly suited to do this.  &lt;br /&gt;&lt;code&gt;&lt;br /&gt; class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Page pg = new Page();&lt;br /&gt;            Label lbl = new Label();&lt;br /&gt;            pg.Controls.Add(lbl);&lt;br /&gt;            lbl.Text = &quot;Look ma no web server&quot;;&lt;br /&gt;            StringWriter sw=new StringWriter();&lt;br /&gt;            HtmlTextWriter tw = new HtmlTextWriter(sw);&lt;br /&gt;            pg.RenderControl(tw);&lt;br /&gt;            Console.Write(sw.ToString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;All thats left is to either save the file or embed the file in the embedded ie window.  You can leverage all the cool controls of asp.net but be sure to remember that there is no way this can postback.</description><link>http://tech-michael.blogspot.com/2008/02/running-aspnet-without-webserver.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-9061322646428442835</guid><pubDate>Fri, 22 Feb 2008 02:38:00 +0000</pubDate><atom:updated>2008-05-28T09:20:35.033-07:00</atom:updated><title>Getting printf to work in avr-gcc \ winavr</title><description>Printf wiring in avr-gcc is fairly easy.  First, make sure you add libm.a and printf_flt.a in avrstudio. See project options for help on this.  Otherwise the lines below will get you started. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    Init(); //init the system   &lt;br /&gt;    fdevopen(&amp;amp;sys_putchar,NULL);//wire in stdout to sys_putchar&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//simple function that receive chars from stdout&lt;br /&gt;int sys_putchar(char val,FILE* fle)&lt;br /&gt;{&lt;br /&gt;    //write out to the LCD for now&lt;br /&gt;    LCD_putchar(val);&lt;br /&gt;    //Put code here to pump a char to the uart port!&lt;br /&gt;    //TODO: uart_putchar&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Let me know if this doenst work!  I wish I would have known about this earlier!</description><link>http://tech-michael.blogspot.com/2008/02/getting-printf-to-work-in-avr-gcc.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-6355218471395609447.post-51138247462309150</guid><pubDate>Wed, 20 Feb 2008 05:18:00 +0000</pubDate><atom:updated>2008-02-19T21:25:15.671-08:00</atom:updated><title>Hacking Gateways WinPE install disks</title><description>So if you hate bloatware on your gateway install disk you&#39;ve probably done some crazy things to avoid it.  I have tried slipstreaming a new xp install with disastrous consequences.  My work around and this is awesome..... After gateway copies all the files to your computer it will boot in as a hidden user and show a screen telling you that its running scripts to setup your system.  Wait until it has installed your drivers then... ctrl+alt+del and kill the install process.  WinPE will shutdown your system and boot you back into windows.  Its that easy to avoid bloat ware!&lt;br /&gt;&lt;br /&gt;System:&lt;br /&gt;Gateway CX210X&lt;br /&gt;&lt;br /&gt;Once done with this I image my machine using the &quot;System Rescue CD&quot; and use PARTIMAGE to image the HD.&lt;br /&gt;&lt;br /&gt;The best setup i have found:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get windows running.&lt;/li&gt;&lt;li&gt;Split your HDD into two parts (OS,FILES) using gparted on the &quot;System Rescue CD&quot;&lt;/li&gt;&lt;li&gt;Make sure your profile is on the FILES drive. (This is a bit tricky).&lt;/li&gt;&lt;li&gt;Image the OS drive using PARTIMAGE and a USB Harddrive.&lt;/li&gt;&lt;li&gt;Use Microsoft Sync Toy to sync your files with a server (who needs icremental backups?&lt;/li&gt;&lt;/ul&gt;</description><link>http://tech-michael.blogspot.com/2008/02/hacking-gateways-winpe-install-disks.html</link><author>noreply@blogger.com (Michael)</author><thr:total>0</thr:total></item></channel></rss>