Crasch Carlo Folini's blog http://blogs.ugidotnet.org/cfolini/Default.aspx Carlo Folini http://blogs.ugidotnet.org/cfolini/Default.aspx Subtext 2020-05-16T13:43:02Z Jquery with mvc3 http://blogs.ugidotnet.org/cfolini/archive/2011/02/18/jquery-with-mvc3.aspx 2011-02-18T02:25:06Z 2011-02-20T00:22:15Z <p>JQuery has been always an interesting topic, but I didn’t find time to try it… looking into MVC3 finally I get in touch with it.</p> <p>I <a href="http://blogs.ugidotnet.org/cfolini/archive/2011/02/17/upgrading-to-asp.net-4.0-amp-mvc-3.aspx" target="_blank">succeded</a> in using asp.net engine together with MVC3 in the same web app. </p> <p>For some reason global.asax events didn’t fire up, but <a href="http://bytes.com/topic/asp-net/answers/292813-application_start-not-firing-global-asax" target="_blank">I found</a> that deleting the file and adding back fixes this problem.PaceSpeedCalculatorModel</p> <p><a href="http://eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx" target="_blank"><strike>I tried</strike></a><strike> to reuse asp.net master pages, without success. I gave up when I got an error saying that System.Web.Mvc.ViewMasterPage doesn’t derive from the correct class. I‘ll wait when this will be natively supported (MVC4?) or when someone else will discover a workaround.</strike></p> <p>The solution <a href="http://eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx" target="_blank">proposed</a> works fine for reusing aspx master pages in a razor view (extensions methods does the magic!!!)</p> <p>The goal I want to achieve is a simple conversion between pace and speed (pace is how much minutes and seconds I takes to cross 1km, speed is in km/h).</p> <p>So 3 textbox minutes, seconds, speed.</p> <p>I created a model for this, with appropriate annotations.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4726d1e6-f92d-4ddb-a960-c919cd5a530e" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">PaceSpeedCalculatorModel.cs</div> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="color:#0000ff">namespace</span> FitCalc.Models</li> <li style="background: #f3f3f3">{</li> <li>    <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">PaceSpeedCalculatorModel</span></li> <li style="background: #f3f3f3">    {</li> <li>        [<span style="color:#2b91af">Required</span>]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">StringLength</span>(2, MinimumLength = 1)]</li> <li>        [<span style="color:#2b91af">Display</span>(Name = <span style="color:#a31515">"paceMinutes"</span>)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">RegularExpression</span>(<span style="color:#a31515">@"[0-9]{1,2}"</span>, ErrorMessage = <span style="color:#a31515">"Minutes must be in the range 00-99"</span>)]</li> <li>        [<span style="color:#2b91af">ScaffoldColumn</span>(<span style="color:#0000ff">false</span>)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">DataType</span>(<span style="color:#2b91af">DataType</span>.Text)]</li> <li>       </li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">Range</span>(0,99)]</li> <li>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> paceMinutes { <span style="color:#0000ff">get</span>; <span style="color:#0000ff">set</span>; }</li> <li style="background: #f3f3f3"> </li> <li>        [<span style="color:#2b91af">Required</span>]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">StringLength</span>(2, MinimumLength = 1)]</li> <li>        [<span style="color:#2b91af">Display</span>(Name = <span style="color:#a31515">"paceSeconds"</span>)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">RegularExpression</span>(<span style="color:#a31515">@"[0-9]{1,2}"</span>, ErrorMessage = <span style="color:#a31515">"Seconds must be in the range 00-59"</span>)]</li> <li>        [<span style="color:#2b91af">ScaffoldColumn</span>(<span style="color:#0000ff">false</span>)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">DataType</span>(<span style="color:#2b91af">DataType</span>.Text)]</li> <li>        [<span style="color:#2b91af">Range</span>(0, 59)]</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> paceSeconds { <span style="color:#0000ff">get</span>; <span style="color:#0000ff">set</span>; }</li> <li> </li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">Required</span>]</li> <li>        [<span style="color:#2b91af">StringLength</span>(2, MinimumLength = 1)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">Display</span>(Name = <span style="color:#a31515">"speed"</span>)]</li> <li>        [<span style="color:#2b91af">ScaffoldColumn</span>(<span style="color:#0000ff">false</span>)]</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">DataType</span>(<span style="color:#2b91af">DataType</span>.Text)]</li> <li>        [<span style="color:#2b91af">Range</span>(0,99)]</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">public</span> <span style="color:#0000ff">string</span> speed { <span style="color:#0000ff">get</span>; <span style="color:#0000ff">set</span>; }</li> <li> </li> <li style="background: #f3f3f3"> </li> <li>    }</li> <li style="background: #f3f3f3">}</li> </ol> </div> </div> </div> <p>Well, not really appropriate… It would be better if the DataType was an integer value for minutes and seconds, but I didn’t find the corresponding value (maybe custom, but for now Text is enough).</p> <p>Created the controller. I wanted to calculate values either by posting the form data and by doing calculation as you type.</p> <p> </p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0c0d928d-4bbf-4772-aa97-a6d9b74ca6cc" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">CalculatorController.cs</div> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="color:#0000ff">using</span> System;</li> <li style="background: #f3f3f3"><span style="color:#0000ff">using</span> System.Collections.Generic;</li> <li><span style="color:#0000ff">using</span> System.Linq;</li> <li style="background: #f3f3f3"><span style="color:#0000ff">using</span> System.Web;</li> <li><span style="color:#0000ff">using</span> System.Web.Mvc;</li> <li style="background: #f3f3f3"><span style="color:#0000ff">using</span> FitCalc.Models;</li> <li> </li> <li style="background: #f3f3f3"><span style="color:#0000ff">namespace</span> FitCalc.Controllers</li> <li>{</li> <li style="background: #f3f3f3">    <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">CalculatorController</span> : <span style="color:#2b91af">Controller</span></li> <li>    {</li> <li style="background: #f3f3f3">        <span style="color:#008000">//</span></li> <li>        <span style="color:#008000">// GET: /Calculator/</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#2b91af">PaceSpeedCalculatorModel</span> _paceSpeed = <span style="color:#0000ff">new</span> <span style="color:#2b91af">PaceSpeedCalculatorModel</span>();</li> <li> </li> <li style="background: #f3f3f3"> </li> <li>        <span style="color:#0000ff">public</span> <span style="color:#2b91af">ActionResult</span> Index()</li> <li style="background: #f3f3f3">        {</li> <li>            <span style="color:#008000">//_paceSpeed.paceMinutes = "1";</span></li> <li style="background: #f3f3f3">            <span style="color:#008000">//_paceSpeed.paceSeconds = "0";</span></li> <li> </li> <li style="background: #f3f3f3">            <span style="color:#0000ff">return</span> <span style="color:#0000ff">this</span>.RazorView(_paceSpeed);</li> <li>        }</li> <li style="background: #f3f3f3">        [<span style="color:#2b91af">HttpPost</span>]</li> <li>        <span style="color:#0000ff">public</span> <span style="color:#2b91af">ActionResult</span> Index(<span style="color:#2b91af">PaceSpeedCalculatorModel</span> pscm)</li> <li style="background: #f3f3f3">        {</li> <li>            _paceSpeed = pscm;</li> <li style="background: #f3f3f3"> </li> <li> </li> <li style="background: #f3f3f3">            <span style="color:#0000ff">return</span> RedirectToAction(<span style="color:#a31515">"Index"</span>);</li> <li>        }</li> <li style="background: #f3f3f3"> </li> <li>        [<span style="color:#2b91af">HttpPost</span>]</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">public</span> <span style="color:#2b91af">ActionResult</span> PaceToSpeed(<span style="color:#2b91af">PaceSpeedCalculatorModel</span> pscm)</li> <li>        {</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">if</span> (pscm.speed == <span style="color:#0000ff">null</span>)</li> <li>                pscm.speed = <span style="color:#2b91af">RunningCalc</span>.PaceToSpeed(<span style="color:#0000ff">new</span> <span style="color:#2b91af">RunningTime</span>(pscm.paceMinutes, pscm.paceSeconds)).ToString();</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">else</span></li> <li>            {</li> <li style="background: #f3f3f3">                <span style="color:#0000ff">double</span> speed = 0;</li> <li>                <span style="color:#2b91af">RunningTime</span> rt = <span style="color:#0000ff">null</span>;</li> <li style="background: #f3f3f3">                <span style="color:#0000ff">if</span> (<span style="color:#0000ff">double</span>.TryParse(pscm.speed, <span style="color:#0000ff">out</span> speed))</li> <li>                    rt = <span style="color:#2b91af">RunningCalc</span>.SpeedToPace(speed);</li> <li style="background: #f3f3f3">                pscm.paceMinutes = rt.Minutes.ToString();</li> <li>                pscm.paceSeconds = rt.Seconds.ToString();</li> <li style="background: #f3f3f3">            }</li> <li>            <span style="color:#0000ff">return</span> <span style="color:#0000ff">this</span>.View(pscm);</li> <li style="background: #f3f3f3"> </li> <li>        }</li> <li style="background: #f3f3f3">    }</li> <li>}</li> </ol> </div> </div> </div> For the first the Action is “Index”. Being an asp, asp.net folk it takes a moment to understand how the data posted by the form is handled. Normally there will be an Index.asp with the form that post to a Calculate.asp. With MVC the action is the same, differentiated by the “HttpPost” attribute. The first time (Index.asp) the browser uses a GET and calls “public ActionResult Index()”. When you submit the form (Calculate.asp) the browser uses a POST activating the “public ActionResult Index(PaceSpeedCalculatorModel pscm)” method. MVC runtime fills automagically the PaceSpeedCalculatorModel parameter, matching POST payload names with class ones. <p>Creating the view based on the annotated model class is really easy and everything went smooth.</p> <p> </p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4673832a-9d41-4604-b639-d4eae213f422" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">Index.cshtml</div> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 3em; padding: 0 0 0 5px;"> <li><span style="background:#ffff00">@model </span>FitCalc.Models.<span style="color:#2b91af">PaceSpeedCalculatorModel</span></li> <li style="background: #f3f3f3"><span style="color:#0000ff">&lt;</span><span style="color:#800000">script</span> <span style="color:#ff0000">src</span><span style="color:#0000ff">="../../Scripts/jquery-1.4.4-vsdoc.js"</span> <span style="color:#ff0000">type</span><span style="color:#0000ff">="text/javascript"&gt;&lt;/</span><span style="color:#800000">script</span><span style="color:#0000ff">&gt;</span></li> <li><span style="color:#0000ff">&lt;</span><span style="color:#800000">script</span> <span style="color:#ff0000">src</span><span style="color:#0000ff">="../../Scripts/json2.js"</span> <span style="color:#ff0000">type</span><span style="color:#0000ff">="text/javascript"&gt;&lt;/</span><span style="color:#800000">script</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3"><span style="background:#ffff00">@{</span></li> <li>    ViewBag.Title = <span style="color:#a31515">"Index"</span>;</li> <li style="background: #f3f3f3">    Layout = <span style="color:#a31515">"~/Views/Shared/_Layout.cshtml"</span>;</li> <li>}</li> <li style="background: #f3f3f3"><span style="color:#0000ff">&lt;</span><span style="color:#800000">script</span> <span style="color:#ff0000">type</span><span style="color:#0000ff">="text/javascript"&gt;</span></li> <li>   </li> <li style="background: #f3f3f3">    $(InitPage);</li> <li>    <span style="color:#0000ff">function</span> InitPage()</li> <li style="background: #f3f3f3">    {</li> <li>    </li> <li style="background: #f3f3f3"> </li> <li>          <span style="color:#0000ff">var</span> paceSpeed = { paceMinutes: $(<span style="color:#800000">"#paceMinutes"</span>).val(),</li> <li style="background: #f3f3f3">                        paceSeconds: $(<span style="color:#800000">"#paceSeconds"</span>).val(),</li> <li>                        speed: $(<span style="color:#800000">"#speed"</span>).val()</li> <li style="background: #f3f3f3">                    };</li> <li> </li> <li style="background: #f3f3f3">        $(<span style="color:#0000ff">function</span> ()</li> <li>        {   setTimeout(checkSearchChanged, 0.1);</li> <li style="background: #f3f3f3">        });</li> <li> </li> <li style="background: #f3f3f3">        <span style="color:#0000ff">function</span> checkSearchChanged()</li> <li>        {   <span style="color:#0000ff">var</span> currentPaceSpeed = { paceMinutes: $(<span style="color:#800000">"#paceMinutes"</span>).val(),</li> <li style="background: #f3f3f3">                paceSeconds: $(<span style="color:#800000">"#paceSeconds"</span>).val(),</li> <li>                speed: $(<span style="color:#800000">"#speed"</span>).val()</li> <li style="background: #f3f3f3">            };</li> <li>            <span style="color:#0000ff">if</span> (<span style="color:#0000ff">true</span> &amp;&amp;</li> <li style="background: #f3f3f3">                ((currentPaceSpeed.paceMinutes)</li> <li>                &amp;&amp; (paceSpeed.paceMinutes)</li> <li style="background: #f3f3f3">                &amp;&amp; currentPaceSpeed.paceMinutes != paceSpeed.paceMinutes</li> <li>                 &amp;&amp; currentPaceSpeed.paceMinutes != <span style="color:#800000">''</span></li> <li style="background: #f3f3f3">                  &amp;&amp; currentPaceSpeed.paceMinutes &gt; 0</li> <li>                  ) </li> <li style="background: #f3f3f3">                || ((currentPaceSpeed.paceSeconds) &amp;&amp; currentPaceSpeed.paceSeconds != paceSpeed.paceSeconds &amp;&amp; currentPaceSpeed.paceSeconds != <span style="color:#800000">''</span> &amp;&amp; currentPaceSpeed.paceSeconds &gt; -1) </li> <li>                || ((currentPaceSpeed.speed) &amp;&amp;  currentPaceSpeed.speed != paceSpeed.speed &amp;&amp; currentPaceSpeed.speed != <span style="color:#800000">''</span> &amp;&amp; currentPaceSpeed.speed.replace(<span style="color:#800000">','</span>,<span style="color:#800000">'.'</span>) &gt; 0) </li> <li style="background: #f3f3f3"> </li> <li>                )</li> <li style="background: #f3f3f3">            {</li> <li>                <span style="color:#006400">//alert("ok inizioe");</span></li> <li style="background: #f3f3f3">                <span style="color:#0000ff">if</span> ((currentPaceSpeed.speed) &amp;&amp; (paceSpeed.speed != <span style="color:#0000ff">null</span>) &amp;&amp; currentPaceSpeed.speed != paceSpeed.speed)</li> <li>                {</li> <li style="background: #f3f3f3">                    <span style="color:#006400">// if speed changed</span></li> <li>                    paceSpeed =</li> <li style="background: #f3f3f3">                    { paceMinutes: <span style="color:#0000ff">null</span>,</li> <li>                        paceSeconds: <span style="color:#0000ff">null</span>,</li> <li style="background: #f3f3f3">                        speed: $(<span style="color:#800000">"#speed"</span>).val()</li> <li>                    };</li> <li style="background: #f3f3f3">                }</li> <li>                <span style="color:#0000ff">else</span></li> <li style="background: #f3f3f3">                {</li> <li>                    paceSpeed =</li> <li style="background: #f3f3f3">                    { paceMinutes: $(<span style="color:#800000">"#paceMinutes"</span>).val(),</li> <li>                        paceSeconds: $(<span style="color:#800000">"#paceSeconds"</span>).val(),</li> <li style="background: #f3f3f3">                        speed: <span style="color:#0000ff">null</span></li> <li>                    }</li> <li style="background: #f3f3f3">                }</li> <li> </li> <li style="background: #f3f3f3">                <span style="color:#0000ff">var</span> jsonString = JSON.stringify(paceSpeed);</li> <li>                $.ajax(</li> <li style="background: #f3f3f3">                {</li> <li>                    url: <span style="color:#800000">'/Calculator/PaceToSpeed'</span>,</li> <li style="background: #f3f3f3">                    type: <span style="color:#800000">"POST"</span>,</li> <li>                    data: jsonString,</li> <li style="background: #f3f3f3">                    dataType: <span style="color:#800000">"json"</span>,</li> <li>                    contentType: <span style="color:#800000">"application/json; charset=utf-8"</span>,</li> <li style="background: #f3f3f3">                    dataFilter: <span style="color:#0000ff">function</span>(data, dataType) {</li> <li>                    <span style="color:#0000ff">if</span> (data.indexOf(<span style="color:#800000">"&lt;!-"</span>) &gt; 0)</li> <li style="background: #f3f3f3">                        {</li> <li>                            <span style="color:#006400">//alert(data.indexOf("&lt;!-"));</span></li> <li style="background: #f3f3f3">                            <span style="color:#006400">//alert(data.substring(0, data.indexOf("&lt;!-")));</span></li> <li>                            <span style="color:#0000ff">return</span> data.substring(0, data.indexOf(<span style="color:#800000">"&lt;!-"</span>));</li> <li style="background: #f3f3f3">                        }</li> <li>                        <span style="color:#0000ff">else</span></li> <li style="background: #f3f3f3">                            <span style="color:#0000ff">return</span> data;</li> <li>                    },</li> <li style="background: #f3f3f3">                    success: <span style="color:#0000ff">function</span> (objResult)</li> <li>                    {</li> <li style="background: #f3f3f3">                        <span style="color:#0000ff">var</span> paceSpeedResult = objResult;</li> <li>                        </li> <li style="background: #f3f3f3">                        $(<span style="color:#800000">"#speed"</span>).val(objResult.speed);</li> <li>                        $(<span style="color:#800000">"#paceSeconds"</span>).val(objResult.paceSeconds);</li> <li style="background: #f3f3f3">                        $(<span style="color:#800000">"#paceMinutes"</span>).val(objResult.paceMinutes);</li> <li>                        paceSpeed = { paceMinutes: $(<span style="color:#800000">"#paceMinutes"</span>).val(),</li> <li style="background: #f3f3f3">                            paceSeconds: $(<span style="color:#800000">"#paceSeconds"</span>).val(),</li> <li>                            speed: $(<span style="color:#800000">"#speed"</span>).val()</li> <li style="background: #f3f3f3">                        };</li> <li>                        setTimeout(checkSearchChanged, 0.1);</li> <li style="background: #f3f3f3">                    },</li> <li>                    error: <span style="color:#0000ff">function</span> (objResult)</li> <li style="background: #f3f3f3">                    {</li> <li>                        alert(<span style="color:#800000">"errore"</span> + objResult);</li> <li style="background: #f3f3f3">                        setTimeout(checkSearchChanged, 0.1);</li> <li>                    }</li> <li style="background: #f3f3f3">                });   </li> <li>            }</li> <li style="background: #f3f3f3">            <span style="color:#0000ff">else</span></li> <li>            {</li> <li style="background: #f3f3f3">                setTimeout(checkSearchChanged, 0.1);</li> <li>            }</li> <li style="background: #f3f3f3">        }</li> <li> </li> <li style="background: #f3f3f3">    }</li> <li><span style="color:#0000ff">&lt;/</span><span style="color:#800000">script</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3"><span style="color:#0000ff">&lt;</span><span style="color:#800000">h2</span><span style="color:#0000ff">&gt;</span></li> <li>    Index<span style="color:#0000ff">&lt;/</span><span style="color:#800000">h2</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3"><span style="background:#ffff00">@</span><span style="color:#0000ff">using</span> (Html.BeginForm())</li> <li>{</li> <li style="background: #f3f3f3">    <span style="background:#ffff00">@</span>Html.ValidationSummary(<span style="color:#0000ff">true</span>)</li> <li>    <span style="color:#0000ff">&lt;</span><span style="color:#800000">fieldset</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;</span><span style="color:#800000">legend</span><span style="color:#0000ff">&gt;</span>PaceSpeedCalculatorModel<span style="color:#0000ff">&lt;/</span><span style="color:#800000">legend</span><span style="color:#0000ff">&gt;</span></li> <li>        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-label"&gt;</span></li> <li style="background: #f3f3f3">            <span style="background:#ffff00">@</span>Html.LabelFor(model =&gt; model.paceMinutes)</li> <li>        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-field"&gt;</span></li> <li>            <span style="background:#ffff00">@</span>Html.EditorFor(model =&gt; model.paceMinutes)</li> <li style="background: #f3f3f3">            <span style="background:#ffff00">@</span>Html.ValidationMessageFor(model =&gt; model.paceMinutes)</li> <li>        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-label"&gt;</span></li> <li>            <span style="background:#ffff00">@</span>Html.LabelFor(model =&gt; model.paceSeconds)</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li>        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-field"&gt;</span></li> <li style="background: #f3f3f3">            <span style="background:#ffff00">@</span>Html.EditorFor(model =&gt; model.paceSeconds)</li> <li>            <span style="background:#ffff00">@</span>Html.ValidationMessageFor(model =&gt; model.paceSeconds)</li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li>        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-label"&gt;</span></li> <li style="background: #f3f3f3">            <span style="background:#ffff00">@</span>Html.LabelFor(model =&gt; model.speed)</li> <li>        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span> <span style="color:#ff0000">class</span><span style="color:#0000ff">="editor-field"&gt;</span></li> <li>            <span style="background:#ffff00">@</span>Html.EditorFor(model =&gt; model.speed)</li> <li style="background: #f3f3f3">            <span style="background:#ffff00">@</span>Html.ValidationMessageFor(model =&gt; model.speed)</li> <li>        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;</span><span style="color:#800000">p</span><span style="color:#0000ff">&gt;</span></li> <li>            <span style="color:#0000ff">&lt;</span><span style="color:#800000">input</span> <span style="color:#ff0000">type</span><span style="color:#0000ff">="submit"</span> <span style="color:#ff0000">value</span><span style="color:#0000ff">="Save"</span> <span style="color:#0000ff">/&gt;</span></li> <li style="background: #f3f3f3">        <span style="color:#0000ff">&lt;/</span><span style="color:#800000">p</span><span style="color:#0000ff">&gt;</span></li> <li>    <span style="color:#0000ff">&lt;/</span><span style="color:#800000">fieldset</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">}</li> <li><span style="color:#0000ff">&lt;</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffff00">@</span>Html.ActionLink(<span style="color:#a31515">"Back to List"</span>, <span style="color:#a31515">"Index"</span>)</li> <li><span style="color:#0000ff">&lt;/</span><span style="color:#800000">div</span><span style="color:#0000ff">&gt;</span></li> </ol> </div> </div> </div> <p>Doing calculation as you type it’s a little bit tricky. I found Scott Allen “jQuery for the .NET Developer” video very interesting. Then followed Scott <a href="http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx" target="_blank">post</a> when he talks about using jquery and JSON to post data to the server. In the sample it wasn’t clear where the JSON.stringify method comes from. To make it work I downloaded Json2.js from <a href="http://www.json.org">www.json.org</a> (well, from <a href="https://github.com/douglascrockford/JSON-js" target="_blank">github</a> because Json.org wasn’t available). <a href="http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx" target="_blank">Here</a> the solution found in comments.</p> <p>With keypress event you didn’t catch all modification to the textbox (say mouse paste), so I switched to <a href="http://geekswithblogs.net/DougLampe/archive/2010/12/21/simple-interactive-search-with-jquery-and-asp.net-mvc.aspx" target="_blank">this</a> solution.</p> <p>With the previous view, I got what I was looking for. I send and receive JSON data to the PaceToSpeed Action. In the view I send the model JSON encoded with raw HTML.</p> <p>@Html.Raw(@Json.Encode(@Model))</p> <p>My <a href="http://www.somee.com/" target="_blank">hoster</a> append some ad to the HTML stream, so I have to filter it when received by the ajax call using the dataFilter method.</p><img src="/cfolini/aggbug/99734.aspx" width="1" height="1" /> Upgrading to asp.net 4.0 &amp; MVC 3 http://blogs.ugidotnet.org/cfolini/archive/2011/02/17/upgrading-to-asp.net-4.0-amp-mvc-3.aspx 2011-02-17T23:25:39Z 2011-02-17T23:25:39Z <p>Time to get my hand dirty with some new web app.</p> <p>I setup a new account on <a href="http://fitcalc.somee.com/" target="_blank">somee</a>, that hosts asp.net 4 apps for free.</p> <p>Uploaded a fresh new “hello world” app created by Visual studio 2010.</p> <p>Wanting to make something with asp.net and MVC I configured the web app to also support MVC 3 following instruction foun <a href="http://www.packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc" target="_blank">here</a>. Nothing fancy, only few steps to get things done.</p> <p>To ease this process I created another web app configured as MVC 3 and compared the two. </p> <p>So I added references to appropriate assembly (some assembly not found directly, but for System.Web.Mvc.dll under C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll).</p> <p>Then modified web.config adding relevant tags.</p> <p>Same thing for global.asax.cs, registering filters into the app.</p> <p>Also modify the .csproj file and especially add proper ProjectTypeGuids i.e. </p> &lt;ProjectTypeGuids&gt;{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}&lt;/ProjectTypeGuids&gt; <p>To start quickly I followed the <a href="http://www.pluralsight-training.net" target="_blank">pluralsight</a> training <a href="http://www.pluralsight-training.net/microsoft/olt/Course/Toc.aspx?n=aspdotnet-mvc3&amp;wmp=true" target="_blank">video</a> as suggested by <a href="http://weblogs.asp.net/scottgu/archive/2011/02/08/special-48-hour-offer-free-asp-net-mvc-3-video-training.aspx" target="_blank">Scott Guthrie</a>.</p> <p>In the /Controllers dir there’s (guess what..) the controllers. Named with the name we choose terminating with a “Controller” string.</p> <p>Views are stored under the /Views dir, grouped in a dir named as the controller.</p> <p>So if we want to create a “Hello” controller the directory structure will be:</p> <p>/Controllers/HelloControlles</p> <p>/Views/Hello/Index.cshtml</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d5fc7490-06e0-4b27-9e17-bd7fa9dbaafe" class="wlWriterEditableSmartContent"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px">HelloController.cs</div> <div style="background: #ddd; max-height: 500px; overflow: auto"> <ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="color:#0000ff">using</span> System;</li> <li style="background: #f3f3f3"><span style="color:#0000ff">using</span> System.Collections.Generic;</li> <li><span style="color:#0000ff">using</span> System.Linq;</li> <li style="background: #f3f3f3"><span style="color:#0000ff">using</span> System.Web;</li> <li><span style="color:#0000ff">using</span> System.Web.Mvc;</li> <li style="background: #f3f3f3"> </li> <li><span style="color:#0000ff">namespace</span> FitCalc.Controllers</li> <li style="background: #f3f3f3">{</li> <li>    <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> <span style="color:#2b91af">HelloController</span> : <span style="color:#2b91af">Controller</span></li> <li style="background: #f3f3f3">    {</li> <li>        <span style="color:#008000">//</span></li> <li style="background: #f3f3f3">        <span style="color:#008000">// GET: /Hello/</span></li> <li> </li> <li style="background: #f3f3f3">        <span style="color:#0000ff">public</span> <span style="color:#2b91af">ActionResult</span> Index()</li> <li>        {</li> <li style="background: #f3f3f3">            ViewBag.Message = <span style="color:#a31515">"Welcome to ASP.NET MVC!"</span>;</li> <li>            <span style="color:#0000ff">return</span> View();</li> <li style="background: #f3f3f3">        }</li> <li> </li> <li style="background: #f3f3f3">    }</li> <li>}</li> </ol> </div> </div> </div> <p>.cshtml is the razor file implementing the view.</p> The URL for this view is /Hello/Index. <img src="/cfolini/aggbug/99733.aspx" width="1" height="1" /> Install a dictionary in Windows Live Writer Beta 3 http://blogs.ugidotnet.org/cfolini/archive/2008/10/01/install-a-dictionary-in-windows-live-writer-beta-3.aspx 2008-10-01T23:51:37Z 2008-10-01T23:51:37Z <p>Many source for this problem around…</p> <p><a title="http://veroblog.wordpress.com/2007/08/28/using-british-english-spelling-in-windows-live-writer/" href="http://veroblog.wordpress.com/2007/08/28/using-british-english-spelling-in-windows-live-writer/">http://veroblog.wordpress.com/2007/08/28/using-british-english-spelling-in-windows-live-writer/</a></p> <p>I found a way easier to solve the problem (it works for italian dictionary). <br />I have WLW 14.0.5025.904 under Vista. <br />In C:\Users\&lt;my user&gt;\AppData\Local\Microsoft\Windows Live Mail\Proof\prf0010\7 (the last two directories may change for different locale) copy the 3 files (.lex .dll .ini). <br />For italian the name is mssp7it . <br />Maybe not all are necessary... I didn't investigate! <br />Paste into C:\Program Files\Windows Live\Writer\Dictionaries. <br />Restart WLW ...now in Tools-&gt;Options-&gt;Spelling you should see a new entry (Italian in my case). <br /></p> <p>Hope this helps</p><img src="/cfolini/aggbug/94222.aspx" width="1" height="1" /> Custom drop target http://blogs.ugidotnet.org/cfolini/archive/2008/05/09/custom-drop-target.aspx 2008-05-09T21:59:40Z 2008-05-09T23:29:16Z <p>The automatically generated designer in DSL assumes that you have to put the shape on the surface and then eventually connect to others.</p> <p>Statements, in microbasic, are executed sequentially so I want the designer to attach my shapes to one previously placed, dropping it in the link between two shapes.</p> <p>To drive the shapes drop behaviour I have to modify where the shapes are allowed to be dropped.</p> <p>Setting the attribute UsesCustomAccept does this (or at least I hope!!!).</p> <div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"> <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">&lt;?</span><span style="color: #800000">xml</span> <span style="color: #ff0000">version</span><span style="color: #0000ff">="1.0"</span> <span style="color: #ff0000">encoding</span><span style="color: #0000ff">="utf-8"</span>?<span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Dsl</span> <span style="color: #ff0000">dslVersion</span><span style="color: #0000ff">="1.0.0.0"</span> <span style="color: #ff0000">Id</span><span style="color: #0000ff">="bd36672a-93b9-4dce-82f8-2551432eb244"</span> <span style="color: #ff0000">Description</span><span style="color: #0000ff">="Description for myns.Language1.Language1"</span> ...<span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Classes</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">DomainClass</span> <span style="color: #ff0000">Id</span><span style="color: #0000ff">="3a3a6bfd-90ef-4418-91a7-3792d2201167"</span> <span style="color: #ff0000">Description</span><span style="color: #0000ff">="The root in which all other elements are embedded. Appears as a diagram."</span> ....<span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">ElementMergeDirectives</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">ElementMergeDirective</span> <font size="+1"><span style="color: #ff0000">UsesCustomAccept</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span></font> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Notes</span><span style="color: #0000ff">&gt;</span>Creates an embedding link when an element is dropped onto a model. <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Notes</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Index</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">DomainClassMoniker</span> <span style="color: #ff0000">Name</span><span style="color: #0000ff">="ExampleElement"</span> <span style="color: #0000ff">/&gt;</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Index</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">LinkCreationPaths</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">DomainPath</span><span style="color: #0000ff">&gt;</span>ExampleModelHasElements.Elements<span style="color: #0000ff">&lt;/</span><span style="color: #800000">DomainPath</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">LinkCreationPaths</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ElementMergeDirective</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ElementMergeDirectives</span><span style="color: #0000ff">&gt;</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">DomainClass</span><span style="color: #0000ff">&gt;</span></pre> </div> <p>As usual regenerate the templates and recompile.</p> <p>An error appears...</p> <p>Error    1    'myns.Language1.ExampleModel' does not contain a definition for 'CanMergeExampleElement' and no extension method 'CanMergeExampleElement' accepting a first argument of type 'myns.Language1.ExampleModel' could be found </p> <p>Clicking on the error you are taken to the  call to the method that you have to implement. Using vs is easy to do this..hover your mouse to the little rectangle at the beginning of the method name.</p> <p> </p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/cfolini/WindowsLiveWriter/Customdroptarget_ED5C/CanMerge_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="CanMerge" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/cfolini/WindowsLiveWriter/Customdroptarget_ED5C/CanMerge_thumb.jpg" width="725" border="0" /></a> </p> <p>Copy the generated method stub to your partial class and implement it. </p> <p>How? I don't know...Stay tuned...</p><img src="/cfolini/aggbug/92595.aspx" width="1" height="1" /> Double derived pattern in DSL http://blogs.ugidotnet.org/cfolini/archive/2008/05/09/double-derived-pattern-in-dsl.aspx 2008-05-09T00:40:13Z 2008-05-09T02:52:43Z <p>Customizing a DSL needs different expertise based on the amount of customization that you want to apply.</p> <p>A 'basic' concept that you need to understand is the double derived pattern.</p> <p>The DSL engine generates classes based on the dsl definition. Those classes are partial class so, like in asp.net or winform, you can create your code for the same class in another file separating it from the automatically generated.</p> <p>Those classes are split in two separate files, but is essentially the same class so you can't replace a method automatically generated.</p> <p>To address this problem the DSL framework introduce the double derived pattern. For each class (with the "Generates Double Derived" attribute set) the generated code is set on the base class so you are free to override the automatically generated code in the derived class.</p> <p>If you have a class named ExampleElement (the one automatically generated if you create a new MinimalLanguage project) and you mark it with "Generates Double Derived" you'll get the following class structure</p> <p><a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/cfolini/WindowsLiveWriter/DoublederivedinDSL_D5E3/DoubleDerive_2.jpg"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="244" alt="DoubleDerive" width="163" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/cfolini/WindowsLiveWriter/DoublederivedinDSL_D5E3/DoubleDerive_thumb.jpg" /></a> </p> <p> </p> <p>The framework generates an ExampleElementBase class that contains all the generated code, in the derived class (ExampleElement) you are free to override everything (except the constructor see below).</p> <p>In case of the Sources property you'll write</p> <div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">partial</span> <span style="COLOR: #0000ff">class</span> ExampleElement { <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">override</span> Microsoft.VisualStudio.Modeling.LinkedElementCollection&lt;ExampleElement&gt; Sources { get { <span style="COLOR: #0000ff">return</span> <span style="COLOR: #0000ff">base</span>.Sources; } } } </pre> </div> <p>The case of constructor it's a little bit different....the problem is that DSL tools must generate the constructor for the derived class (if not the framework couldn't instantiate the class). So if you need to override also the constructor you can set the "Has custom constructor".</p> <p>(Remember to select "Transform all templates" and rebuild!)</p> <p>In this case a compilation error is generated stating that you have to implement the constructor. Something like</p> <p>Error    1    "...ExampleElement' does not contain a constructor that takes '0' arguments  </p> <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b2bdb723-1c0d-4732-bef6-1075d7e4040c" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">del.icio.us Tags: <a rel="tag" href="http://del.icio.us/popular/DSL">DSL</a></div><img src="/cfolini/aggbug/92581.aspx" width="1" height="1" /> Visual programming language using visual studio DSL http://blogs.ugidotnet.org/cfolini/archive/2008/05/08/visual-programming-language-using-visual-studio-dsl-again.aspx 2008-05-08T12:45:56Z 2008-05-09T02:53:06Z <p>I found a very interesting <a href="http://chdk.wikia.com/wiki/Main_Page">firmware</a> for my <a href="http://www.canon-europe.com/for_home/product_finder/cameras/digital_camera/powershot/powershot-a550/index.asp">Canon A550</a>. This new firmware adds tons of new feature. One of those, is the scripting support using a language similar to basic.</p> <p>As a programmer it's easy to program with it...well...too easy!</p> <p>So I decided to throw some of my spare time to play with <a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">DSL</a>.</p> <p>The basic idea is to create a DSL that let's you visually program the canon scripting.</p> <p>What I want to achieve is a tool having a toolbar with all the language (if, do, variable declaration...) and camera (shoot, zoom...) statements that you can drag on the programming surface to construct a script.</p> <p>The first look at DSL give me the idea that the learning curve is very steep...so it's perfect to save me from the current <a href="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=Folini">time waster</a>. <iframe style="WIDTH: 100%; HEIGHT: 100%" src="http://www.popfly.com/users/Crasch/MyGamerTag.small" frameborder="no" allowtransparency="allowtransparency"></iframe></p> <p>Stay tuned for future posts about it...</p> <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3ca61cca-8898-4be4-8f9f-2c6377adadaf" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">del.icio.us Tags: <a rel="tag" href="http://del.icio.us/popular/Visual%20programming%20language%20DSL">Visual programming language DSL</a></div><img src="/cfolini/aggbug/92575.aspx" width="1" height="1" /> Cross thread call in a winform http://blogs.ugidotnet.org/cfolini/archive/2008/03/01/creating-an-embedded-resource-dll-for-ie-automation.aspx 2008-03-01T20:58:08Z 2008-04-25T23:13:48Z <p>In a winform you have to make all modification from the thread where the winform is created. <br />If you manage async operations you'll step into the problem of modifying the form from another thread. <br />You can use delegate to do this. <br />Say you want to change the textbox text. <br />First declare the delegate that accepts a string as a parameter: </p> <p> <br /><font face="Courier New" size="2">public delegate void SetLogTextDelegate(String myString);</font> </p> <p> <br />Then declare a variable with the previous delegate as hits type. </p> <p> <br /><font face="Courier New">public SetLogTextDelegate myDelegate; </font></p> <p>Implement the method that will be called: </p> <p> <br /><font face="Courier New">public void SetLogTextMethod(string myString) <br />{ <br />   System.Diagnostics.Trace.WriteLine(myString); <br />   this.txtLog.Text += myString + Environment.NewLine; <br />}</font></p> <font face="Courier New"></font> <p> <br />Actually I use this method to log some messages either in the OutputDebugString (I take the default listener) and in the textbox. <br />Then assign the delegate (the form constructor is a good place).</p> <p> <br /><font face="Courier New">myDelegate = new SetLogTextDelegate(SetLogTextMethod);</font></p> <p>You can now call the delegate wherever you want:</p> <p> <br /><font face="Courier New">this.Invoke(this.myDelegate, new object[] { myString });</font></p> <p>You can embed this call in a method of his own for clarity sake:</p> <p> <br /><font face="Courier New">public void SetLogText(string myString) <br />{ <br />   this.Invoke(this.myDelegate, new object[] { myString }); <br />} </font></p> <font face="Courier New"> <p> <br /></p> A sample winform app:</font> <p> </p> <div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"> <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">using</span> System; <span style="color: #0000ff">using</span> System.Windows.Forms; <span style="color: #0000ff">using</span> System.Threading; <span style="color: #0000ff">namespace</span> CrossThreadCallDemo { <span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> Form1 : Form { <span style="color: #0000ff">public</span> <span style="color: #0000ff">delegate</span> <span style="color: #0000ff">void</span> SetLogTextDelegate(String myString); <span style="color: #0000ff">public</span> SetLogTextDelegate myDelegate; <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> SetLogText(<span style="color: #0000ff">string</span> myString) { <span style="color: #0000ff">this</span>.Invoke(<span style="color: #0000ff">this</span>.myDelegate, <span style="color: #0000ff">new</span> <span style="color: #0000ff">object</span>[] { myString }); } <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> SetLogTextMethod(<span style="color: #0000ff">string</span> myString) { System.Diagnostics.Trace.WriteLine(myString); <span style="color: #0000ff">this</span>.txtLog.Text += myString + Environment.NewLine; } <span style="color: #0000ff">public</span> Form1() { InitializeComponent(); SetLogTextMethod(<span style="color: #006080">"Form started threadId="</span> + Thread.CurrentThread.ManagedThreadId); myDelegate = <span style="color: #0000ff">new</span> SetLogTextDelegate(SetLogTextMethod); } <span style="color: #0000ff">private</span> <span style="color: #0000ff">void</span> btnStart_Click(<span style="color: #0000ff">object</span> sender, EventArgs e) { <span style="color: #0000ff">new</span> System.Threading.Thread(<span style="color: #0000ff">new</span> ParameterizedThreadStart(Process)).Start(); } <span style="color: #0000ff">void</span> Process(<span style="color: #0000ff">object</span> state) { <span style="color: #008000">//txtLog.Text = "Hello";</span> <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.InvokeRequired) SetLogText(<span style="color: #006080">"Hello threadId="</span> + Thread.CurrentThread.ManagedThreadId); <span style="color: #0000ff">else</span> txtLog.Text = <span style="color: #006080">"Hello"</span>; } } }</pre> </div> <p> <br />That's it</p><img src="/cfolini/aggbug/92384.aspx" width="1" height="1" /> Parameter passing playground http://blogs.ugidotnet.org/cfolini/archive/2008/02/09/parameter-passing-playground.aspx 2008-02-09T01:38:04Z 2008-02-09T01:38:04Z <p>Getting used to how parameter passing works isn't really simple. Especially if you didn't program so often, every now and then you have to check back how things works. If you really want to understand how things work I recommend you <a target="_blank" href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632">CLR via C#</a> by Jeffrey Richter.</p> <p>First thing to remember is the difference between value and reference types. The first lives in the stack(int, short, struct), the second on the heap (string, your class types).</p> <div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"> <div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 1:</span> <span style="COLOR: #0000ff">class</span> Program</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 2:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 3:</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 4:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 5:</span> <span style="COLOR: #0000ff">string</span> callerString1 = <span style="COLOR: #006080">"CallerValue1"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 6:</span> <span style="COLOR: #0000ff">string</span> callerString2 = <span style="COLOR: #006080">"CallerValue2"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 7:</span> <span style="COLOR: #0000ff">string</span> callerString3 = callerString1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 8:</span> <span style="COLOR: #0000ff">string</span> callerString4 = callerString2;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 9:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 10:</span> <span style="COLOR: #0000ff">string</span> stringBefore = <span style="COLOR: #006080">"callerString1="</span> + callerString1 + <span style="COLOR: #006080">" callerString2="</span> + callerString2 + <span style="COLOR: #006080">" callerString3="</span> + callerString3 + <span style="COLOR: #006080">" callerString4="</span> + callerString4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 11:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 12:</span> <span style="COLOR: #0000ff">int</span> int1 = 8;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 13:</span> <span style="COLOR: #0000ff">int</span> int2 = 9;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 14:</span> <span style="COLOR: #0000ff">int</span> int3 = int1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 15:</span> <span style="COLOR: #0000ff">int</span> int4 = int2;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 16:</span> <span style="COLOR: #0000ff">string</span> intBefore = <span style="COLOR: #006080">"int1="</span> + int1 + <span style="COLOR: #006080">" int2="</span> + int2 + <span style="COLOR: #006080">" int3="</span> + int3 + <span style="COLOR: #006080">" int4="</span> + int4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 17:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 18:</span> MyType objTest1 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 19:</span> MyType objTestTemp1 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 20:</span> objTest1.X = 10;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 21:</span> objTestTemp1 = objTest1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 22:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 23:</span> <span style="COLOR: #0000ff">string</span> objectBefore1 = <span style="COLOR: #006080">"objTest1.X="</span> + objTest1.X + <span style="COLOR: #006080">" objTestTemp1.X="</span> + objTestTemp1.X;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 24:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 25:</span> MyType objTest2 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 26:</span> MyType objTestTemp2 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 27:</span> objTest2.X = 11;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 28:</span> objTestTemp2 = objTest2;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 29:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 30:</span> <span style="COLOR: #0000ff">string</span> objectBefore2 = <span style="COLOR: #006080">"objTest2.X="</span> + objTest2.X + <span style="COLOR: #006080">" objTestTemp2.X="</span> + objTestTemp2.X;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 31:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 32:</span> prova(callerString1, <span style="COLOR: #0000ff">ref</span> callerString2, int1, <span style="COLOR: #0000ff">ref</span> int2, objTest1, <span style="COLOR: #0000ff">ref</span> objTest2);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 33:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 34:</span> <span style="COLOR: #0000ff">string</span> stringAfter = <span style="COLOR: #006080">"callerString1="</span> + callerString1 + <span style="COLOR: #006080">" callerString2="</span> + callerString2 + <span style="COLOR: #006080">" callerString3="</span> + callerString3 + <span style="COLOR: #006080">" callerString4="</span> + callerString4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 35:</span> <span style="COLOR: #0000ff">string</span> intAfter = <span style="COLOR: #006080">"int1="</span> + int1 + <span style="COLOR: #006080">" int2="</span> + int2 + <span style="COLOR: #006080">" int3="</span> + int3 + <span style="COLOR: #006080">" int4="</span> + int4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 36:</span> <span style="COLOR: #0000ff">string</span> objectAfter1 = <span style="COLOR: #006080">"objTest1.X="</span> + objTest1.X + <span style="COLOR: #006080">" objTestTemp1.X="</span> + objTestTemp1.X;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 37:</span> <span style="COLOR: #0000ff">string</span> objectAfter2 = <span style="COLOR: #006080">"objTest2.X="</span> + objTest2.X + <span style="COLOR: #006080">" objTestTemp2.X="</span> + objTestTemp2.X;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 38:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 39:</span> Console.Out.WriteLine(stringBefore);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 40:</span> Console.Out.WriteLine(stringAfter);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 41:</span> Console.Out.WriteLine(intBefore);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 42:</span> Console.Out.WriteLine(intAfter);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 43:</span> Console.Out.WriteLine();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 44:</span> Console.Out.WriteLine(objectBefore1);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 45:</span> Console.Out.WriteLine(objectAfter1);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 46:</span> Console.Out.WriteLine();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 47:</span> Console.Out.WriteLine(objectBefore2);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 48:</span> Console.Out.WriteLine(objectAfter2);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 49:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 50:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 51:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 52:</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> prova(<span style="COLOR: #0000ff">string</span> string1, <span style="COLOR: #0000ff">ref</span> <span style="COLOR: #0000ff">string</span> string2, <span style="COLOR: #0000ff">int</span> methodInt1, <span style="COLOR: #0000ff">ref</span> <span style="COLOR: #0000ff">int</span> methodInt2, MyType methodObjProva1, <span style="COLOR: #0000ff">ref</span> MyType methodObjProva2)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 53:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 54:</span> <span style="COLOR: #0000ff">string</span> string3 = <span style="COLOR: #006080">"MethodValue5"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 55:</span> string1 = <span style="COLOR: #006080">"MethodValue1"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 56:</span> string1 = string3;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 57:</span> string1 = <span style="COLOR: #006080">"MethodValue2"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 58:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 59:</span> <span style="COLOR: #0000ff">string</span> string4 = <span style="COLOR: #006080">"MethodValue6"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 60:</span> string2 = <span style="COLOR: #006080">"MethodValue3"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 61:</span> string2 = string4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 62:</span> string2 = <span style="COLOR: #006080">"MethodValue4"</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 63:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 64:</span> methodInt1 = 1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 65:</span> <span style="COLOR: #0000ff">int</span> internalInt = 10;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 66:</span> methodInt1 = internalInt;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 67:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 68:</span> methodInt2 = 1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 69:</span> methodInt2 = internalInt;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 70:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 71:</span> MyType internalMyType1 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 72:</span> internalMyType1.X = -3;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 73:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 74:</span> methodObjProva1.X = -4;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 75:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 76:</span> methodObjProva1 = internalMyType1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 77:</span> methodObjProva1.X = -5;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 78:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 79:</span> MyType internalMyType2 = <span style="COLOR: #0000ff">new</span> MyType();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 80:</span> methodObjProva2.X = -6;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 81:</span> methodObjProva2 = internalMyType2;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 82:</span> methodObjProva2.X = -7;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 83:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 84:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 85:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 86:</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> MyType</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 87:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 88:</span> <span style="COLOR: #0000ff">int</span> x = 0;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 89:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 90:</span> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">int</span> X</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 91:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 92:</span> get { <span style="COLOR: #0000ff">return</span> x; }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 93:</span> set { x = <span style="COLOR: #0000ff">value</span>; }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 94:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"><span style="COLOR: #606060"> 95:</span> }</pre> </div> </div> <p> </p> <p>tbc</p><img src="/cfolini/aggbug/91105.aspx" width="1" height="1" /> Strange xml parsing behavior (at least to me!!!) http://blogs.ugidotnet.org/cfolini/archive/2008/01/11/90656.aspx 2008-01-11T18:00:30Z 2008-02-05T16:33:05Z <p>If you load an xml document with the dom (I tried it with MSXML and System.Xml.XmlDocument) that has the node content set to &gt; (greater than) the value is escaped by the parser. </p> <p>If you specify an xml (containing the greater than sign) as the node content it isn't escaped.</p> <p>So if you have </p> <p>&lt;root&gt;&gt;&lt;/root&gt; you'll get &lt;root&gt;&amp;gt;&lt;/root&gt;</p> <p>if you have </p> <p> &lt;root&gt;&gt;&lt;foo /&gt;&lt;/root&gt; you'll get (the same) &lt;root&gt;&lt;foo /&gt;&lt;/root&gt;</p> <p>Strange!</p><img src="/cfolini/aggbug/90656.aspx" width="1" height="1" /> Echo server in c# http://blogs.ugidotnet.org/cfolini/archive/2008/01/06/90571.aspx 2008-01-06T10:17:31Z 2008-02-05T16:33:24Z <p>A friend of mine asked me some help to troubleshoot accessing a device in his home network from internet.</p> <p>I'm not an expert of networks but with the help of <a href="http://www.portforward.com">www.portforward.com</a> and a simple c# winform I succesfully manage to made things work.</p> <p>The program listen on the specified port and responds with a simple hello message and the ip of the caller.</p> <p>This is handy if you don't know what the service should reply and you want to be sure that the problem didn't lie on the service not replying correctly.</p> <p>The program uses HttpListener that leverage the http.sys stack. Beware that with windows Vista you have to run it with administrator privilege to listen to the specified port.</p> <p> </p> <div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas,'Courier New',courier,monospace; BACKGROUND-COLOR: rgb(244,244,244)"> <div style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 1:</span> <span style="COLOR: rgb(0,0,255)">using</span> System;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 2:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.ComponentModel;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 3:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.Windows.Forms;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 4:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.Net;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 5:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.Diagnostics;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 6:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.Configuration;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 7:</span> <span style="COLOR: rgb(0,0,255)">using</span> System.Collections.Specialized;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 8:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 9:</span> <span style="COLOR: rgb(0,0,255)">namespace</span> EchoServer</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 10:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 11:</span> <span style="COLOR: rgb(0,0,255)">public</span> <span style="COLOR: rgb(0,0,255)">partial</span> <span style="COLOR: rgb(0,0,255)">class</span> Form1 : Form</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 12:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 13:</span> <span style="COLOR: rgb(0,0,255)">const</span> <span style="COLOR: rgb(0,0,255)">int</span> maxThread = 1;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 14:</span> <span style="COLOR: rgb(0,0,255)">const</span> <span style="COLOR: rgb(0,0,255)">int</span> listeningPort = 12346;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 15:</span> HttpListener proxyListener = <span style="COLOR: rgb(0,0,255)">null</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 16:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 17:</span> <span style="COLOR: rgb(0,0,255)">public</span> Form1()</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 18:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 19:</span> InitializeComponent();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 20:</span> </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 21:</span> NameValueCollection appSettings = ConfigurationManager.AppSettings;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 22:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 23:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 24:</span> txtPortNumber.Text = appSettings.Get(<span style="COLOR: rgb(0,96,128)">"port"</span>); </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 25:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 26:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 27:</span> <span style="COLOR: rgb(0,0,255)">private</span> <span style="COLOR: rgb(0,0,255)">void</span> btnStartStop_Click(<span style="COLOR: rgb(0,0,255)">object</span> sender, EventArgs e)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 28:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 29:</span> proxyListener = <span style="COLOR: rgb(0,0,255)">new</span> HttpListener();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 30:</span> proxyListener.Prefixes.Add(<span style="COLOR: rgb(0,96,128)">"http://+:"</span> + txtPortNumber.Text + <span style="COLOR: rgb(0,96,128)">"/"</span>);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 31:</span> proxyListener.Start();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 32:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 33:</span> <span style="COLOR: rgb(0,0,255)">int</span> count = 0;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 34:</span> BackgroundWorker[] listeners = <span style="COLOR: rgb(0,0,255)">new</span> BackgroundWorker[maxThread];</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 35:</span> <span style="COLOR: rgb(0,0,255)">this</span>.Text = <span style="COLOR: rgb(0,96,128)">"listening on port "</span> + listeningPort ;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 36:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 37:</span> TraceMessage(<span style="COLOR: rgb(0,96,128)">"Creating background worker threads on main thread "</span> + System.Threading.Thread.CurrentThread.ManagedThreadId);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 38:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 39:</span> <span style="COLOR: rgb(0,0,255)">do</span></pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 40:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 41:</span> listeners[count] = <span style="COLOR: rgb(0,0,255)">new</span> BackgroundWorker();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 42:</span> listeners[count].WorkerReportsProgress = <span style="COLOR: rgb(0,0,255)">true</span>;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 43:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 44:</span> listeners[count].DoWork += StartListening;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 45:</span> listeners[count].RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 46:</span> listeners[count].RunWorkerAsync();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 47:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 48:</span> } <span style="COLOR: rgb(0,0,255)">while</span> (count++ &lt; maxThread - 1);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 49:</span> TraceMessage(<span style="COLOR: rgb(0,96,128)">"Background threads initialization ended. Reading configuration from "</span> + System.Windows.Forms.Application.LocalUserAppDataPath);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 50:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 51:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 52:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 53:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 54:</span> <span style="COLOR: rgb(0,0,255)">public</span> <span style="COLOR: rgb(0,0,255)">void</span> StartListening(<span style="COLOR: rgb(0,0,255)">object</span> sender, DoWorkEventArgs e)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 55:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 56:</span> BackgroundWorker worker = sender <span style="COLOR: rgb(0,0,255)">as</span> BackgroundWorker;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 57:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 58:</span> <span style="COLOR: rgb(0,0,255)">try</span></pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 59:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 60:</span> <span style="COLOR: rgb(0,0,255)">object</span>[] valori = <span style="COLOR: rgb(0,0,255)">new</span> <span style="COLOR: rgb(0,0,255)">object</span>[1];</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 61:</span> HttpListenerContext myContext = proxyListener.GetContext();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 62:</span> HttpListenerRequest myRequest = myContext.Request;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 63:</span> HttpListenerResponse myResponse = myContext.Response;</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 64:</span> <span style="COLOR: rgb(0,0,255)">byte</span>[] responseText = System.Text.ASCIIEncoding.ASCII.GetBytes(<span style="COLOR: rgb(0,96,128)">"Hello "</span> + myRequest.RemoteEndPoint.Address + <span style="COLOR: rgb(0,96,128)">":"</span> + myRequest.RemoteEndPoint.Port);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 65:</span> myResponse.OutputStream.Write(responseText, 0, responseText.Length);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 66:</span> myResponse.Close();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 67:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 68:</span> <span style="COLOR: rgb(0,0,255)">catch</span> (Exception exc)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 69:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 70:</span> System.Diagnostics.Trace.WriteLine(<span style="COLOR: rgb(0,96,128)">"Error::"</span> + exc);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 71:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 72:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 73:</span> <span style="COLOR: rgb(0,0,255)">private</span> <span style="COLOR: rgb(0,0,255)">void</span> backgroundWorker1_RunWorkerCompleted(<span style="COLOR: rgb(0,0,255)">object</span> sender, RunWorkerCompletedEventArgs e)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 74:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 75:</span> TraceMessage(<span style="COLOR: rgb(0,96,128)">"backgroundWorker1_RunWorkerCompleted start "</span>);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 76:</span> ((BackgroundWorker)sender).RunWorkerAsync();</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 77:</span> TraceMessage(<span style="COLOR: rgb(0,96,128)">"backgroundWorker1_RunWorkerCompleted end"</span>);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 78:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 79:</span>  </pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 80:</span> <span style="COLOR: rgb(0,0,255)">public</span> <span style="COLOR: rgb(0,0,255)">void</span> TraceMessage(<span style="COLOR: rgb(0,0,255)">string</span> message)</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 81:</span> {</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 82:</span> StackFrame CallStack = <span style="COLOR: rgb(0,0,255)">new</span> StackFrame(1, <span style="COLOR: rgb(0,0,255)">true</span>);</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 83:</span> System.Diagnostics.Trace.WriteLine(CallStack.GetFileName().Substring(CallStack.GetFileName().LastIndexOf(<span style="COLOR: rgb(0,96,128)">"\\") + 1) + "</span> [<span style="COLOR: rgb(0,96,128)">" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString("</span>00<span style="COLOR: rgb(0,96,128)">") + "</span>] <span style="COLOR: rgb(0,96,128)">" + message + "</span> <span style="COLOR: rgb(0,96,128)">" + CallStack.GetMethod().Name + "</span>(<span style="COLOR: rgb(0,96,128)">" + CallStack.GetFileLineNumber().ToString() + "</span>)");</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 84:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 85:</span> }</pre> <pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas,'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); BORDER-BOTTOM-STYLE: none"><span style="COLOR: rgb(96,96,96)"> 86:</span> }</pre> </div> </div> <p>Hope this helps someone.</p><img src="/cfolini/aggbug/90571.aspx" width="1" height="1" /> System.Web.HttpWriter