<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspadvice.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">manik.net</title><subtitle type="html">alles über c# / microsoft asp.net und viel, viel mehr</subtitle><id>http://aspadvice.com/blogs/maniknet/atom.aspx</id><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/default.aspx" /><link rel="self" type="application/atom+xml" href="http://aspadvice.com/blogs/maniknet/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.60809.935">Community Server</generator><updated>2007-12-21T12:52:00Z</updated><entry><title>Ganz kurz: WebClient mit eigenem Verbindungs Timeout (WebClient with a custom connection timeout)</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx</id><published>2008-06-16T12:28:18Z</published><updated>2008-06-16T12:28:18Z</updated><content type="html">&lt;p&gt;English: As I'm having a few english readers I'm going to add english post subjects whenever I'm posting interesting and helpful code-snippets :) The topic says it all, it shows you how to add a timeout to the WebClient class.&lt;/p&gt;  &lt;p&gt;...und jetzt wieder auf Deutsch :-) Vorher hat mich die Frage erreicht wie man denn den WebClient mit einem Timeout versehen kann, da es ja f&amp;#252;r gew&amp;#246;hnlich heisst, man m&amp;#252;sse in solchen F&amp;#228;llen auf die HttpWebRequest-Klasse zur&amp;#252;ckgreifen. Das stimmt jedenfalls nicht, denn man kann eine Klasse von der Klasse WebClient ableiten und dann die Methode GetWebRequest &amp;#252;berschreiben und das WebRequest objekt, welches vom WebClient verwendet wird, nach belieben modifizieren.&lt;/p&gt;  &lt;p&gt;Im folgenden Code sieht man wie simpel und genial so etwas in C#/.NET aussehen kann:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TimeoutWebClient : WebClient
    {
        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _timeOut = 10000;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; TimeOut
        {
            get
            {
                &lt;span class="kwrd"&gt;return&lt;/span&gt; _timeOut;
            }
            set
            {
                _timeOut = &lt;span class="kwrd"&gt;value&lt;/span&gt;;
            }
        }

        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; WebRequest GetWebRequest(Uri address)
        {
            WebRequest webRequest = &lt;span class="kwrd"&gt;base&lt;/span&gt;.GetWebRequest(address);
            webRequest.Timeout = _timeOut;
            &lt;span class="kwrd"&gt;return&lt;/span&gt; webRequest;
        }
    }&lt;/pre&gt;

&lt;p&gt;Okay, das war's auch schon f&amp;#252;r Heute :) Viel Spa&amp;#223; mit dem angepassten WebClient!&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;;subject=Ganz+kurz%3a+WebClient+mit+eigenem+Verbindungs+Timeout+(WebClient+with+a+custom+connection+timeout)" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;;title=Ganz+kurz%3a+WebClient+mit+eigenem+Verbindungs+Timeout+(WebClient+with+a+custom+connection+timeout)" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;title=Ganz+kurz%3a+WebClient+mit+eigenem+Verbindungs+Timeout+(WebClient+with+a+custom+connection+timeout)" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;;title=Ganz+kurz%3a+WebClient+mit+eigenem+Verbindungs+Timeout+(WebClient+with+a+custom+connection+timeout)" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx&amp;amp;;title=Ganz+kurz%3a+WebClient+mit+eigenem+Verbindungs+Timeout+(WebClient+with+a+custom+connection+timeout)&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/16/Ganz-kurz_3A00_-WebClient-mit-eigenem-Verbindungs-Timeout-_2800_WebClient-with-a-custom-connection-timeout_2900_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=43189" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="tutorial" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/tutorial/default.aspx" /><category term="c#" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/c_2300_/default.aspx" /><category term="snippet" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/snippet/default.aspx" /></entry><entry><title>Linq: DataContext in einer Web-Anwendung? Statisch? Bei jedem Aufruf? Wie denn bitte?!</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx</id><published>2008-06-10T01:24:44Z</published><updated>2008-06-10T01:24:44Z</updated><content type="html">&lt;p&gt;Diese Frage stellt sich wohl jeder wenn man Linq-to-SQL in einer Web-Anwendung verwenden m&amp;#246;chte. Microsoft sagt dazu folgendes: &amp;quot;A DataContext shoud be use per unit of work&amp;quot;. Das hei&amp;#223;t soviel wie, man sollte einen DataContext instanzieren f&amp;#252;r jede Arbeitseinheit die Anf&amp;#228;llt, ich denke mal damit ist jeder INSERT/UPDATE/SELECT Befehl gemeint. Ist allerdings meiner Meinung nach etwas viel da so ein Datacontext einiges an Overhead mit sich bringt.&lt;/p&gt;  &lt;p&gt;Also? Was machen wir dann? L&amp;#246;sen wir das Problem in dem wir unseren DataContext in unserer Webanwedung einfach statisch deklarieren? Nein. Das w&amp;#252;rde einiges an Problemen mit sich bringen, zum Beispiel wenn Objekte &amp;quot;InsertOnSubmit&amp;quot; markiert werden w&amp;#228;hrend ein &amp;quot;SubmitChanges&amp;quot; Aufruf ausgef&amp;#252;hrt wird. Aber das ist auch nur eines der *vielen* Probleme.   &lt;br /&gt;Die L&amp;#246;sung ist Simpel, wir verwenden einen DataContext f&amp;#252;r jeden Request der beim Server ankommt. Mit dieser Methode hatte ich bisher noch keine Probleme und die Last auf dem Server ist auch nicht so gigantisch, da wir den DataContext auch nur instanzieren sollten wenn er gebraucht wird. Zusammen mit der .net 3.x Spracherweiterung mit der wir Instanz-Methoden in vorhanden Klassen &amp;quot;injizieren&amp;quot; k&amp;#246;nnen. Die Idee ist, dass wir unseren &amp;quot;Per-Request-DataContext&amp;quot; dann &amp;#252;ber das &amp;quot;Request&amp;quot;-Objekt aufrufen k&amp;#246;nnen. Den passenden Codeschnipsel gibt's nat&amp;#252;rlich auch:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; HttpContextExtension
{
   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; _key = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;();

   &lt;span class="rem"&gt;// extend HttpContext class&lt;/span&gt;
   &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; DataContext GetDataContext(&lt;span class="kwrd"&gt;this&lt;/span&gt; HttpContext httpContext)
   {
      &lt;span class="kwrd"&gt;if&lt;/span&gt; (httpContext.Items[_key] == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
          httpContext.Items[_key] = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataContext();
      
      &lt;span class="kwrd"&gt;return&lt;/span&gt; httpContext.Items[_key] &lt;span class="kwrd"&gt;as&lt;/span&gt; DataContext;
   }
}&lt;/pre&gt;

&lt;p&gt;Die HttpContextExtension-Klasse sollte dann in einen Namespace der &amp;#252;berall dort eingebunden ist, wo man auf die Context.GetDataAcessObject() Methode zugreifen m&amp;#246;chte.
  &lt;br /&gt;&amp;#220;brigens, das &amp;quot;this&amp;quot; Schl&amp;#252;ssel wort am ersten Parameter markiert diese statische Methode als Methode die in die klasse HttpContext injiziert wird.&lt;/p&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;;subject=Linq%3a+DataContext+in+einer+Web-Anwendung%3f+Statisch%3f+Bei+jedem+Aufruf%3f+Wie+denn+bitte%3f!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;;title=Linq%3a+DataContext+in+einer+Web-Anwendung%3f+Statisch%3f+Bei+jedem+Aufruf%3f+Wie+denn+bitte%3f!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;title=Linq%3a+DataContext+in+einer+Web-Anwendung%3f+Statisch%3f+Bei+jedem+Aufruf%3f+Wie+denn+bitte%3f!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;;title=Linq%3a+DataContext+in+einer+Web-Anwendung%3f+Statisch%3f+Bei+jedem+Aufruf%3f+Wie+denn+bitte%3f!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx&amp;amp;;title=Linq%3a+DataContext+in+einer+Web-Anwendung%3f+Statisch%3f+Bei+jedem+Aufruf%3f+Wie+denn+bitte%3f!&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/Linq_3A00_-DataContext-in-einer-Web_2D00_Anwendung_3F00_-Statisch_3F00_-Bei-jedem-Aufruf_3F00_-Wie-denn-bitte_3F002100_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=43022" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="tutorial" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/tutorial/default.aspx" /><category term="c#" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/c_2300_/default.aspx" /><category term="asp.net" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/asp.net/default.aspx" /><category term="snippet" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/snippet/default.aspx" /><category term="linq" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/linq/default.aspx" /></entry><entry><title>70-528? Bestanden!</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx</id><published>2008-06-10T01:01:36Z</published><updated>2008-06-10T01:01:36Z</updated><content type="html">&lt;p&gt;So, letzten Mittwoch habe ich dann endlich auch die 70-528 Pr&amp;#252;fung bestanden und bin jetzt offiziell &amp;quot;Microsoft Certified Technology Specialist&amp;quot; :)&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;;subject=70-528%3f+Bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;;title=70-528%3f+Bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;title=70-528%3f+Bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;;title=70-528%3f+Bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx&amp;amp;;title=70-528%3f+Bestanden!&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/06/10/70_2D00_528_3F00_-Bestanden_2100_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=43020" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="manik" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/manik/default.aspx" /><category term="certification" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/certification/default.aspx" /></entry><entry><title>Microsoft Exam: 70-536 - bestanden!</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx</id><published>2008-05-27T10:38:51Z</published><updated>2008-05-27T10:38:51Z</updated><content type="html">&lt;p&gt;Ich hatte heute Morgen mein erstes Microsoft Examen, das &amp;quot;Microsoft .NET Framework - Application Development Foundation&amp;quot; und habe das nat&amp;#252;rlich bestanden ;).&lt;/p&gt;  &lt;p&gt;Vorbereitet habe ich mich mit der &amp;#252;blichen, von Microsoft vorgeschlagenen, Lekt&amp;#252;re. Als n&amp;#228;chstes steht das 70-526 an, welches ich im Laufe der n&amp;#228;chsten Wochen absolvieren m&amp;#246;chte.&lt;/p&gt;  &lt;p&gt;In der n&amp;#228;chsten Zeit werde ich au&amp;#223;erdem etwas, naja eher viel, &amp;#252;ber Linq-to-SQL schreiben.   &lt;br /&gt;Wieso? Weil ich Linq zum ersten mal in einer echten n-Tier Webapplikation mit kompletten &amp;quot;Business Object Layer&amp;quot; eingesetzt habe. Alles in allem muss ich sagen Linq ist &amp;quot;heiss&amp;quot;. Zusammen mit dem .NET Framework 3.5 habe ich da ein paar echt n&amp;#252;tzliche Techniken entwickelt, f&amp;#252;r jeden den das Thema Linq in Kombination mit ASP.net interessiert sollte das ein &amp;quot;must-read&amp;quot; werden.    &lt;br /&gt;F&amp;#252;r diejenigen die es interessiert: das Projekt ist eine Musik-Suchmaschine a la google, momentan noch nicht ganz fertig - wird aber bald live geschaltet.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;;subject=Microsoft+Exam%3a+70-536+-+bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;;title=Microsoft+Exam%3a+70-536+-+bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;title=Microsoft+Exam%3a+70-536+-+bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;;title=Microsoft+Exam%3a+70-536+-+bestanden!" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx&amp;amp;;title=Microsoft+Exam%3a+70-536+-+bestanden!&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/05/27/Microsoft-Exam_3A00_-70_2D00_536-_2D00_-bestanden_2100_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=42646" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="asp.net" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/asp.net/default.aspx" /><category term="manik" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/manik/default.aspx" /><category term="certification" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/certification/default.aspx" /></entry><entry><title>C# und ASP.Net Performance Optimierungen</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx</id><published>2008-04-18T13:30:00Z</published><updated>2008-04-18T13:30:00Z</updated><content type="html">&lt;p&gt;Hier mal in Stichworten ein paar Grunds&amp;auml;tze die man beim Entwicklen beachten sollte, wenn Laufzeit-Performance eine Rolle spielt:&lt;/p&gt;&lt;p style="margin:0cm 0cm 0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;strong&gt;C# Performance Optimierungen: &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="margin-top:0cm;"&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Lieber wenig gro&amp;szlig;e wie viel kleine Assemblys&lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&amp;bdquo;sealed&amp;ldquo;-Klassen wann immer m&amp;ouml;glich bei geerbten Typen mit vielen virtuellen Funktionen. Die virtuellen aufrufe werden dann &amp;bdquo;inline&amp;ldquo; teil der Klasse.&lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&amp;bdquo;Equals&amp;ldquo; &amp;uuml;berschreiben bei Value-Types&lt;span&gt;&amp;nbsp; &lt;/span&gt;( struct valuetype ) , vermeidet Reflektionskosten &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Propertys sind teurer wie &amp;ouml;ffentliche Attribute. Bei einfach switches eher &amp;ouml;ffentliche Attribute verwenden (z.B: public bool Debug). &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Boxing vermeiden! Fixe Typen wann es geht. &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;for anstatt foreach &lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;so wenig funktionsaufruf in einem loop wie m&amp;ouml;glich, d.h. auch rekursive Aufrufe vermeiden - auch Property zugriffe sollte so gut wie m&amp;ouml;glich vermieden werden&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;bdquo;jagged arrays&amp;ldquo; anstelle von multidimensionalen arrays.&lt;br /&gt;string[][] jaggedArray = new string[2][];&lt;br /&gt;jaggedArray[0] = new string[4];&lt;br /&gt;jaggedArray[1] = new string[1];&lt;br /&gt;jaggedArray[0][1] = &amp;ldquo;performance!&amp;rdquo;;&lt;br /&gt;&lt;br /&gt;MSIL kann eindimensionale Arrays besser optimieren wie mehrdimensionale. &lt;br /&gt;Auf MSIL ebene sieht man den unterschied:&lt;br /&gt;&lt;br /&gt;int [,] secondarr = new int[1, 2];&lt;br /&gt;secondarr[0, 0] = 40;&lt;br /&gt;&lt;br /&gt;MSIL: &lt;br /&gt;&lt;br /&gt;IL_0029: ldc.i4.s&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;40&lt;br /&gt;IL_002b: call instance void int32[0...,0...]::Set(int32, int32,in32)&lt;br /&gt;&lt;br /&gt;Mit einem Jaggedarray sieht das ganze dann auf MSIL so aus:&lt;br /&gt;&lt;br /&gt;IL_001c:&lt;span&gt;&amp;nbsp; &lt;/span&gt;ldc.i4.s&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;40&lt;br /&gt;IL_001e:&lt;span&gt;&amp;nbsp; &lt;/span&gt;stelem.i4&lt;br /&gt;&lt;br /&gt;stelem = &amp;bdquo;store an element&amp;ldquo;&lt;br /&gt;&lt;br /&gt;Bei mehrdimensionalen Arrays wird der ganze &amp;bdquo;Generic Type&amp;ldquo;-Kram also betrieben was einiges an Overhead erzeugt. &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Bei string vergleichen wo Gro&amp;szlig;-/Kleinschreibung ignoriert werden soll CompareTo anstatt a.ToLower()==b.ToLower() da die ToLower operation zus&amp;auml;tzliche strings erzeugt&lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;(try/catch)-bl&amp;ouml;cke vermeiden, lieber den Code sicher schreiben (null checks etc.) und gut pr&amp;uuml;fen &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin:0cm 0cm 0pt 18pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;br /&gt;&lt;strong&gt;ASP .Net Optimierungen: &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="margin-top:0cm;"&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Roundtrips vermeiden: Server.Transfer anstelle von Response.Redirect&lt;span&gt;&amp;nbsp; &lt;/span&gt;(es wird kein Responseheader zur&amp;uuml;ck geschickt der einen Redirect auf dem Clienten verursacht, d.h. die Url im Browser &amp;auml;ndert sich auch nicht, allerdings spart man dadurch einen Roundtrip) &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Lange Control.ID zuweisungen vermeiden &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Tiefe Control Schachtelungen vermeiden &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Viewstate ausschalten wenn nicht ben&amp;ouml;tigt, am besten nicht per Control sondern per page&lt;br /&gt;wann? &lt;br /&gt;-&amp;gt; die seite macht kein postback mit informationen verschiedener controls (5 textboxen auf einer seite)&lt;br /&gt;-&amp;gt; controls haben keinen dynamischen inhalt oder werden mit jedem postback neu bef&amp;uuml;llt &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Page.IsPostBack property verwenden um eine mehrfach initialisierung zu vermeiden &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Page.DataBind() vermeiden -&amp;gt; jedes control das DataBinding unterst&amp;uuml;tzt wird dann gebundend. -&amp;gt; notwendige controls einzeln binden &lt;/span&gt;&lt;/li&gt;&lt;li style="margin:0cm 0cm 0pt;tab-stops:list 36.0pt;" class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;Eval(##) vermeiden lieber explizit Casten und Daten von hand auswerten, spart Reflektionskosten &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;;subject=C%23+und+ASP.Net+Performance+Optimierungen" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;;title=C%23+und+ASP.Net+Performance+Optimierungen" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;title=C%23+und+ASP.Net+Performance+Optimierungen" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;;title=C%23+und+ASP.Net+Performance+Optimierungen" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx&amp;amp;;title=C%23+und+ASP.Net+Performance+Optimierungen&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/04/18/C_2300_-und-ASP.Net-Performance-Optimierungen.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=41516" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="performance" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/performance/default.aspx" /><category term="optimizing" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/optimizing/default.aspx" /><category term="c#" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/c_2300_/default.aspx" /><category term="asp.net" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/asp.net/default.aspx" /></entry><entry><title>(Child) Controls finden auf der gesamten Page</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx</id><published>2008-01-17T12:06:12Z</published><updated>2008-01-17T12:06:12Z</updated><content type="html">&lt;p&gt;Leider bietet ja FindControl nur die m&amp;#246;glichkeit das/die aktuelle Control/Page zu durchsuchen. Was ist aber wenn man ein Childcontrol eines nachbar Controls sucht auf das die aktuelle Page/Control kein Zugriff hat? Man braucht eine Funktion mit der man rekursiv nach einer Control.ID suchen kann. Diese Funktion gibts nicht direkt im .net Framework aber auf meinem Blg und zwar hier:&lt;/p&gt;  &lt;p&gt;   &lt;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;"&gt;     &lt;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;"&gt;       &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; T FindControl&amp;lt;T&amp;gt;(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; id, Control root) &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; T : &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (root == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     Control control = root.FindControl(id); &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (control != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; control &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; T; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (Control childControl &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; root.Controls)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     {    &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (childControl == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (childControl.Controls.Count &amp;lt;= 0)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;         T match = FindControl&amp;lt;T&amp;gt;(id, childControl); &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (match != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; match;&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt; }&lt;/pre&gt;

      &lt;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;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;Wenn wir ein Updatepanel von einem Customcontrol aus auf der gesamten Page suchen mit dem namen &amp;quot;MyAjaxPanel&amp;quot; dann w&amp;#252;rde die Funktion wie folgt gerufen:&lt;/p&gt;

&lt;div&gt;
  &lt;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;"&gt;UpdatePanel updatePanel = FindControl&amp;lt;UpdatePanel&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;WatchlistAjaxPanel&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Page)&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Man &amp;#252;bergibt also den Typen des Controls das man sucht, das erspart uns &amp;#252;berfl&amp;#252;ssiges type-casting. Falls der Typ unbekannt ist kann man aber auch ganz einfach nach dem &amp;quot;Control&amp;quot; Typen suchen, also:&lt;/p&gt;

&lt;div&gt;
  &lt;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;"&gt;FindControl&amp;lt;Control&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;WatchlistAjaxPanel&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Page)&lt;/pre&gt;
&lt;/div&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;;subject=(Child)+Controls+finden+auf+der+gesamten+Page" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;;title=(Child)+Controls+finden+auf+der+gesamten+Page" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;title=(Child)+Controls+finden+auf+der+gesamten+Page" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;;title=(Child)+Controls+finden+auf+der+gesamten+Page" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx&amp;amp;;title=(Child)+Controls+finden+auf+der+gesamten+Page&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/17/_2800_Child_2900_-Controls-finden-auf-der-gesamten-Page.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=38691" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author></entry><entry><title>Ajax UpdatePanel.Refresh() ausl&amp;#246;sen per Javascript</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx</id><published>2008-01-06T12:27:00Z</published><updated>2008-01-06T12:27:00Z</updated><content type="html">&lt;p&gt;Vor ein paar Tagen musste ich ein Ajax UpdatePanel.Refresh() per JavaScript ausl&amp;ouml;sen, der Haken daran war es mussten auch noch Zusatzinformationen an den Server &amp;uuml;bertragen werden. &lt;br /&gt;Die L&amp;ouml;sung ist man ruft die JavaScript Funktion &amp;quot;__doPostBack&amp;quot; aus und &amp;uuml;bergibt als EventTarget die ClientID des UpdatePanel das zu refreshen gilt. Die Zusatzinformationen werden dem EventArgument Parameter der &amp;quot;__doPostBack&amp;quot; Funktion &amp;uuml;bergeben. &lt;br /&gt;Wenn man &lt;u&gt;keine&lt;/u&gt; Parameter bzw. Zusatzinfos an den Server &amp;uuml;bertragen m&amp;ouml;chte - also nur das Updatepanel refreshen ist das ganze ziemlich einfach.&lt;/p&gt;&lt;p&gt;Javascript Code:&lt;/p&gt;&lt;div style="font-size:8pt;margin:20px 0px 10px;overflow:auto;width:97.5%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border:gray 1px solid;padding:4px;"&gt;&lt;div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; refreshUpdatePanel( updatePanelClientID )&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;{ &lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    __doPostBack( updatePanelClientID, &lt;span style="color:#006080;"&gt;&amp;#39;&amp;#39;&lt;/span&gt; );&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Dazu der passende C# Code:&lt;/p&gt;&lt;div style="font-size:8pt;margin:20px 0px 10px;overflow:auto;width:97.5%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border:gray 1px solid;padding:4px;"&gt;&lt;div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;button.OnClientClick = &lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    &lt;span style="color:#006080;"&gt;&amp;quot;BLOCKED SCRIPTrefreshUpdatePanel( &amp;#39;&amp;quot;&lt;/span&gt; + updatePanel.ClientID + &lt;span style="color:#006080;"&gt;&amp;quot;&amp;#39; );&amp;quot;&lt;/span&gt;+&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    &lt;span style="color:#006080;"&gt;&amp;quot;return false;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;Zu beachten ist hier lediglich das &amp;quot;&lt;em&gt;return false&lt;/em&gt;&amp;quot; am ende des OnClientClick JavaScripts. &lt;br /&gt;Dieses verhindert einen asp.net postback zur&amp;uuml;ck an den server. &lt;p&gt;Wenn man Parameter/Zusatzinformationen an den Server zur&amp;uuml;ck schicken m&amp;ouml;chte wird das ganze allerdings etwas komplizierter.&lt;/p&gt;&lt;p&gt;Javascript Code:&lt;/p&gt;&lt;div style="font-size:8pt;margin:20px 0px 10px;overflow:auto;width:96.16%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;height:171px;background-color:#f4f4f4;border:gray 1px solid;padding:4px;"&gt;&lt;div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; refreshUpdatePanelParameterized( updatePanelClientID, eventArgumentName )&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    &lt;span style="color:#008000;"&gt;// do javascript stuff to populate event arguments here, like get all checked checkboxes&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    &lt;span style="color:#008000;"&gt;// or other clientside control content and send it back to the server&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    &lt;span style="color:#008000;"&gt;// i&amp;#39;ll use &amp;quot;nothing&amp;quot; as argument placeholder here&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; eventArguments = &lt;span style="color:#006080;"&gt;&amp;#39;nothing&amp;#39;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    &lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    __doPostBack( updatePanelClientID, eventArgumentName + &lt;span style="color:#006080;"&gt;&amp;#39;_#_&amp;#39;&lt;/span&gt; + eventArguments);&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;C# Code:&lt;/p&gt;&lt;div style="font-size:8pt;margin:20px 0px 10px;overflow:auto;width:96.54%;cursor:text;max-height:200px;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;height:210px;background-color:#f4f4f4;border:gray 1px solid;padding:4px;"&gt;&lt;div style="font-size:8pt;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Init(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; ( Request.Params[&lt;span style="color:#006080;"&gt;&amp;quot;__EVENTTARGET&amp;quot;&lt;/span&gt;] == updatePanel.ClientID )&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    {&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] eventsArgs = Request.Params[&lt;span style="color:#006080;"&gt;&amp;quot;__EVENTARGUMENT&amp;quot;&lt;/span&gt;].Split( &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[]{&lt;span style="color:#006080;"&gt;&amp;quot;_#_&amp;quot;&lt;/span&gt;}, StringSplitOptions.RemoveEmptyEntries );&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; argumentName = eventsArgs[0];&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; argumentValue = eventsArgs[1];&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;        System.Diagnostics.Debug.WriteLine(string.Format(&lt;span style="color:#006080;"&gt;&amp;quot;Recieved command {0} with values {1}.&amp;quot;&lt;/span&gt;, argumentName, argumentValue ) );&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;    }             &lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:white;border-style:none;padding:0px;"&gt;    button.OnClientClick = &lt;span style="color:#006080;"&gt;&amp;quot;BLOCKED SCRIPTrefreshUpdatePanelParameterized( &amp;#39;&amp;quot;&lt;/span&gt; + updatePanel.ClientID + &lt;span style="color:#006080;"&gt;&amp;quot;&amp;#39;, &amp;#39;arg1&amp;#39; ); return false;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="font-size:8pt;margin:0em;overflow:visible;width:100%;color:black;line-height:12pt;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Wie das geschulte Auge erkennt werden hier zwei Parameter &amp;uuml;bertragen, ArgumentName und ArgumentValue. Der &amp;quot;refreshUpdatePanelParameterized&amp;quot; wird der ArgumentName (hier: &amp;quot;arg1&amp;quot;) &amp;uuml;bergeben und die Funktion selbst ermittelt dann noch im JavaScript die ArgumentValue (hier: &amp;quot;nothing&amp;quot; ) und schickt die Informationen als Postback an den Server. &lt;br /&gt;Der Serverseitige C# code &amp;quot;entschl&amp;uuml;sselt&amp;quot; diese Informationen wieder in argumentName und argumentValue und verwertet diese anschlie&amp;szlig;end.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;;subject=Ajax+UpdatePanel.Refresh()+ausl%26amp%3b%23246%3bsen+per+Javascript" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;;title=Ajax+UpdatePanel.Refresh()+ausl%26amp%3b%23246%3bsen+per+Javascript" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;title=Ajax+UpdatePanel.Refresh()+ausl%26amp%3b%23246%3bsen+per+Javascript" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;;title=Ajax+UpdatePanel.Refresh()+ausl%26amp%3b%23246%3bsen+per+Javascript" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx&amp;amp;;title=Ajax+UpdatePanel.Refresh()+ausl%26amp%3b%23246%3bsen+per+Javascript&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2008/01/06/Async-Ajax-UpdatePanel-Postback-ausl_F600_sen-mit-Javascript.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=38238" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="tutorial" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/tutorial/default.aspx" /><category term="c#" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/c_2300_/default.aspx" /><category term="javascript" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/javascript/default.aspx" /><category term="ajax" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/ajax/default.aspx" /><category term="asp.net" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/asp.net/default.aspx" /></entry><entry><title>Performance Timing mit ‚using’ und delegates mit „Conditional“ Methoden</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx</id><published>2007-12-21T12:18:00Z</published><updated>2007-12-21T12:18:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;Letztens musste ich die (zeitliche) Performance einer sehr CPU/IO l&amp;#228;stigen Operation verbessern.      &lt;br /&gt;Da die Operation in diverse kleinere Vorg&amp;#228;nge unterteilt war musste ich die Vorg&amp;#228;nge ermitteln, welche am meisten Zeit in Anspruch nahmen und das meiste Optimierungspotential hatten. Daf&amp;#252;r hab ich eine Klasse entworfen die mit dem &amp;#8222;&lt;span class="SpellE"&gt;using&amp;#8220;-Mechanismus&lt;/span&gt; die Dauer einer Operation ermittelt. Dabei bin ich auch darauf gesto&amp;#223;en, dass der C# Compiler Methoden die das &amp;#8222;&lt;span class="SpellE"&gt;Conditional&lt;/span&gt;&amp;#8220; Attribut haben nicht &lt;span class="SpellE"&gt;delegates&lt;/span&gt; zuweisen kann. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Also, nun zu der Klasse:&lt;/span&gt; &lt;/p&gt;  &lt;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;height:434px;background-color:#f4f4f4;"&gt;   &lt;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;"&gt;     &lt;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;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; PerformanceTiming : IDisposable&lt;/pre&gt;

    &lt;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;"&gt;{&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;delegate&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; LogPerformance(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;);&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; DateTime _startTime;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _name;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; LogPerformance _logPerformanceMethod;&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _startMessage = &lt;span style="color:#006080;"&gt;&amp;quot;PerformanceTiming={0}: Start={1}&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _endMessage = &lt;span style="color:#006080;"&gt;&amp;quot;PerformanceTiming={0}: End={1} Duration={2}msec&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; PerformanceTiming(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; name)&lt;/pre&gt;

    &lt;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;"&gt; {&lt;/pre&gt;

    &lt;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;"&gt;  &lt;span style="color:#008000;"&gt;// cannot directly use Debug.WriteLine(string) as it has the &amp;quot;Conditional&amp;quot; attribute.&lt;/span&gt;&lt;/pre&gt;

    &lt;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;"&gt;  &lt;span style="color:#008000;"&gt;//  _logPerformanceMethod = System.Diagnostics.Debug.WriteLine(value);&lt;/span&gt;&lt;/pre&gt;

    &lt;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;"&gt;  &lt;span style="color:#008000;"&gt;// have to use wrapper function&lt;/span&gt;&lt;/pre&gt;

    &lt;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;"&gt;  _logPerformanceMethod = DebugWriteLineWrapper;&lt;/pre&gt;

    &lt;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;"&gt;  _name = name;&lt;/pre&gt;

    &lt;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;"&gt;  _startTime = DateTime.Now;&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt;  _logPerformanceMethod(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(_startMessage, _name, _startTime.ToLongTimeString()));&lt;/pre&gt;

    &lt;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;"&gt; }&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; PerformanceTiming(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; name, LogPerformance logPerformanceMethod)&lt;/pre&gt;

    &lt;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;"&gt; {&lt;/pre&gt;

    &lt;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;"&gt;  _logPerformanceMethod = logPerformanceMethod;&lt;/pre&gt;

    &lt;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;"&gt;  _name = name;&lt;/pre&gt;

    &lt;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;"&gt;  _startTime = DateTime.Now;&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt;  _logPerformanceMethod(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(_startMessage, _name, _startTime.ToLongTimeString()));&lt;/pre&gt;

    &lt;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;"&gt; }&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; DebugWriteLineWrapper(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;)&lt;/pre&gt;

    &lt;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;"&gt; {&lt;/pre&gt;

    &lt;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;"&gt;  System.Diagnostics.Debug.WriteLine(&lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;);&lt;/pre&gt;

    &lt;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;"&gt; }&lt;/pre&gt;

    &lt;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;"&gt;&amp;#160;&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; IDisposable Members&lt;/pre&gt;

    &lt;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;"&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Dispose()&lt;/pre&gt;

    &lt;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;"&gt; {&lt;/pre&gt;

    &lt;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;"&gt;  _logPerformanceMethod(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(_endMessage, _name, DateTime.Now.ToLongTimeString(), (DateTime.Now - _startTime).TotalMilliseconds));&lt;/pre&gt;

    &lt;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;"&gt; }&lt;/pre&gt;

    &lt;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;"&gt;&lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;

    &lt;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;"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-family:arial;"&gt;Mehr oder weniger simple, ja, aber es ist eigentlich auch die Idee bzw. die Anwendung der Klasse was die Sache so sinnvoll macht. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; (&lt;span style="color:teal;"&gt;PerformanceTiming&lt;/span&gt; performanceTiming = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;PerformanceTiming&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;quot;HeavyWork&amp;quot;&lt;/span&gt;)) 

    &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;{&amp;#160; &lt;br /&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;System.Threading.&lt;span style="color:teal;"&gt;Thread&lt;/span&gt;.Sleep(2000); &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;
    &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;} &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;Damit wird der folgende Output in den &lt;span class="SpellE"&gt;Debugoutput&lt;/span&gt; &lt;span class="SpellE"&gt;stream&lt;/span&gt; geschrieben: &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:35.4pt;"&gt;&lt;span class="SpellE"&gt;&lt;b&gt;&lt;span&gt;PerformanceTiming&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;=&lt;span class="SpellE"&gt;HeavyWork&lt;/span&gt;: Start=13:12:16 

      &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="SpellE"&gt;&lt;b&gt;&lt;span&gt;PerformanceTiming&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;=&lt;span class="SpellE"&gt;HeavyWork&lt;/span&gt;: End=13:12:18 Duration=1999&lt;span class="GramE"&gt;,6672msec&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;Es wird also die Start-/Endzeit der Operation ausgegeben, plus die Dauer in Millisekunden. 
    &lt;br /&gt;Die Ausgabe kann nat&amp;#252;rlich ohne Probleme angepasst werden. 

    &lt;br /&gt;Man kann auch eine Methode an das &lt;span class="SpellE"&gt;PerformanceTiming&lt;/span&gt; Objekt &amp;#252;bergeben, welcher dann die Ausgabestrings &amp;#252;bergeben werden, so z.B.&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span class="SpellE"&gt;Console.Writeline&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;using&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; (&lt;span style="color:teal;"&gt;PerformanceTiming&lt;/span&gt; performanceTiming = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:teal;"&gt;PerformanceTiming&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;quot;HeavyWo&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:maroon;font-family:'Courier New';"&gt;rk&amp;quot;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;, &lt;span style="color:teal;"&gt;Console&lt;/span&gt;.WriteLine)) 

    &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;System.Threading.&lt;span style="color:teal;"&gt;Thread&lt;/span&gt;.Sleep(2000); 

    &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;} &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;Man k&amp;#246;nnte&lt;span&gt;&amp;#160; &lt;/span&gt;nat&amp;#252;rlich auch jede andere Funktion die nur einen (&lt;span class="SpellE"&gt;string&lt;/span&gt;) Parameter hat &amp;#252;bergeben, z.B. &lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="font-family:'Courier New';"&gt;StreamWriter.WriteLine&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; um Direkt in eine Datei zu loggen. &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="font-family:arial;"&gt;Conditional&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; Methoden und &lt;span class="SpellE"&gt;delegates&lt;/span&gt;, wie macht man das? Man schreibt einfach eine &lt;span class="SpellE"&gt;Wrapper&lt;/span&gt; &lt;span class="SpellE"&gt;funktion&lt;/span&gt; die nicht das &lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;[&lt;span style="color:teal;"&gt;Conditional&lt;/span&gt;(&lt;span style="color:maroon;"&gt;&amp;quot;DEBUG&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;span style="font-family:arial;"&gt; Attribut besitzt.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;So wird aus: &lt;/span&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;_logPerformanceMethod = System.Diagnostics.&lt;span style="color:teal;"&gt;Debug&lt;/span&gt;.WriteLine;&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;span style="font-family:arial;"&gt;Das: &lt;/span&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;_logPerformanceMethod = DebugWriteLineWrapper;&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; DebugWriteLineWrapper(&lt;span style="color:blue;"&gt;string&lt;/span&gt; value)&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;{&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.Diagnostics.&lt;span style="color:teal;"&gt;Debug&lt;/span&gt;.WriteLine(value);&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;So, das war nun mein erster mehr oder weniger Sinnvoller Blogeintrag :-) &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;EDIT: Wie postet man eigentlich code-snippets hier?&lt;/p&gt;

&lt;p&gt;EDIT2: I now know the answer thanks to my friend Brendan from &lt;a href="http://aspadvice.com/blogs/name/default.aspx"&gt;Orcs, Goblins and .NET&lt;/a&gt;, I will blog about it in a few days.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;;subject=Performance+Timing+mit+%e2%80%9ausing%e2%80%99+und+delegates+mit+%e2%80%9eConditional%e2%80%9c+Methoden" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;;title=Performance+Timing+mit+%e2%80%9ausing%e2%80%99+und+delegates+mit+%e2%80%9eConditional%e2%80%9c+Methoden" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;title=Performance+Timing+mit+%e2%80%9ausing%e2%80%99+und+delegates+mit+%e2%80%9eConditional%e2%80%9c+Methoden" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;;title=Performance+Timing+mit+%e2%80%9ausing%e2%80%99+und+delegates+mit+%e2%80%9eConditional%e2%80%9c+Methoden" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx&amp;amp;;title=Performance+Timing+mit+%e2%80%9ausing%e2%80%99+und+delegates+mit+%e2%80%9eConditional%e2%80%9c+Methoden&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Performance-Timing-mit-_1A20_using_1920_-und-delegates-mit-_1E20_Conditional_1C20_-Methoden.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=37862" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author><category term="performance" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/performance/default.aspx" /><category term="optimizing" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/optimizing/default.aspx" /><category term="tutorial" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/tutorial/default.aspx" /><category term="c#" scheme="http://aspadvice.com/blogs/maniknet/archive/tags/c_2300_/default.aspx" /></entry><entry><title>Hi</title><link rel="alternate" type="text/html" href="http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx" /><id>http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx</id><published>2007-12-21T11:52:00Z</published><updated>2007-12-21T11:52:00Z</updated><content type="html">&lt;p&gt;Es heisst der erste Blogpost ist der schwerste. So ist es auch tats&amp;#228;chlich, aus diesem Grund werde ich den Blogeintrag an dieser Stelle abbrechen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.home.hs-karlsruhe.de/~near0011/bruellwurst/gullideckel/" target="_blank"&gt;Der beleuchtete Neon-Platin Gullideckel&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;;subject=Hi" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;;title=Hi" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;title=Hi" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;;title=Hi" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx&amp;amp;;title=Hi&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/maniknet/archive/2007/12/21/Hi.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=37861" width="1" height="1"&gt;</content><author><name>manik</name><uri>http://aspadvice.com/members/manik.aspx</uri></author></entry></feed>