<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/2.4.2" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Memos Team Blog</title>
		<link>http://blog.memos.cz/index.php/team/</link>
		<description>Memos Team Blog focused on Outlook and SharePoint development, design patterns and general .NET Framework problems</description>
		<language>en-GB</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=2.4.2"/>
		<ttl>60</ttl>
				<item>
			<title>DevExpress - Exception handling during callback</title>
			<link>http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback</link>
			<pubDate>Thu, 22 Oct 2009 11:07:30 +0000</pubDate>			<dc:creator>Tomas Vyhnal</dc:creator>
			<category domain="main">ASP.NET</category>
<category domain="alt">DevExpress</category>			<guid isPermaLink="false">39@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'DevExpress - Exception handling during callback';
digg_bodytext = 'According to this page there is no way how to easily catch all exceptions which occur during callback processing (note that  Page_Error and even global.asax Application_Error methods are not fired during callback processing). Of course, you can surround all of your codebehind callback methods with try ... catch blocks, but ';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;According to &lt;a href=&quot;http://www.devexpress.com/Support/Center/p/Q200677.aspx?searchtext=Exceptions+during+callback&amp;amp;p=T4|P5|0&quot;&gt;this page&lt;/a&gt; there is no way how to easily catch all exceptions which occur during callback processing (note that  Page_Error and even global.asax Application_Error methods are not fired during callback processing). Of course, you can surround all of your codebehind callback methods with try ... catch blocks, but this is not elegent way how to catch all exceptions. We need one piece of code, where we can catch and process all unhandled exceptions.&lt;br /&gt;
The only solution I have found so far, is to create your own class which will derive from devexpress control, which you use to process callbacks (in our case ASPxCallbackPanel):&lt;/p&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;
&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; ASPxCallbackPanelExtended : ASPxCallbackPanel
{
    &lt;span class=&quot;kwrd&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; OnCallbackException(Exception e)
    {
        Logger.Log(e);

        &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;base&lt;/span&gt;.OnCallbackException(e);
    }
}
&lt;/pre&gt;

&lt;p&gt;Than you will need to replace all existing ASPxCallbackPanelfrom your pages with ASPxCallbackPanelExtended:&lt;/p&gt;


&lt;pre class=&quot;csharpcode&quot;&gt;
&amp;lt;dev:ASPxCallbackPanelExtended ID=&lt;span class=&quot;str&quot;&gt;&quot;panPersonalData&quot;&lt;/span&gt; ClientInstanceName=&lt;span class=&quot;str&quot;&gt;&quot;panPersonalData&quot;&lt;/span&gt;
    runat=&lt;span class=&quot;str&quot;&gt;&quot;server&quot;&lt;/span&gt; OnCallback=&lt;span class=&quot;str&quot;&gt;&quot;panelPersonalData_OnCallback&quot;&lt;/span&gt; HideContentOnCallback=&lt;span class=&quot;str&quot;&gt;&quot;False&quot;&lt;/span&gt;
    EnableCallbackCompression=&lt;span class=&quot;str&quot;&gt;&quot;true&quot;&lt;/span&gt;&amp;gt;
...
&amp;lt;/dev:ASPxCallbackPanelExtended&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Yes, this solution is not perfect too, because you need to derive from all classes which can cause callbacks and override OnCallbackException method in your application (for example ASPxCallback), but this is the only solution I have found.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'DevExpress - Exception handling during callback';
digg_bodytext = 'According to this page there is no way how to easily catch all exceptions which occur during callback processing (note that  Page_Error and even global.asax Application_Error methods are not fired during callback processing). Of course, you can surround all of your codebehind callback methods with try ... catch blocks, but ';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><p>According to <a href="http://www.devexpress.com/Support/Center/p/Q200677.aspx?searchtext=Exceptions+during+callback&amp;p=T4|P5|0">this page</a> there is no way how to easily catch all exceptions which occur during callback processing (note that  Page_Error and even global.asax Application_Error methods are not fired during callback processing). Of course, you can surround all of your codebehind callback methods with try ... catch blocks, but this is not elegent way how to catch all exceptions. We need one piece of code, where we can catch and process all unhandled exceptions.<br />
The only solution I have found so far, is to create your own class which will derive from devexpress control, which you use to process callbacks (in our case ASPxCallbackPanel):</p>
<pre class="csharpcode">
<span class="kwrd">public</span> <span class="kwrd">class</span> ASPxCallbackPanelExtended : ASPxCallbackPanel
{
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">string</span> OnCallbackException(Exception e)
    {
        Logger.Log(e);

        <span class="kwrd">return</span> <span class="kwrd">base</span>.OnCallbackException(e);
    }
}
</pre>

<p>Than you will need to replace all existing ASPxCallbackPanelfrom your pages with ASPxCallbackPanelExtended:</p>


<pre class="csharpcode">
&lt;dev:ASPxCallbackPanelExtended ID=<span class="str">"panPersonalData"</span> ClientInstanceName=<span class="str">"panPersonalData"</span>
    runat=<span class="str">"server"</span> OnCallback=<span class="str">"panelPersonalData_OnCallback"</span> HideContentOnCallback=<span class="str">"False"</span>
    EnableCallbackCompression=<span class="str">"true"</span>&gt;
...
&lt;/dev:ASPxCallbackPanelExtended&gt;
</pre>

<p>Yes, this solution is not perfect too, because you need to derive from all classes which can cause callbacks and override OnCallbackException method in your application (for example ASPxCallback), but this is the only solution I have found.</p><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2009/10/22/devexpress-exception-handling-callback#comments</comments>
		</item>
				<item>
			<title>Publishing documents from Microsoft SharePoint on an ASP.NET website</title>
			<link>http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net</link>
			<pubDate>Tue, 21 Apr 2009 21:11:32 +0000</pubDate>			<dc:creator>Lukas Neumann</dc:creator>
			<category domain="main">Microsoft Sharepoint</category>
<category domain="alt">ASP.NET</category>			<guid isPermaLink="false">36@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Publishing documents from Microsoft SharePoint on an ASP.NET website';
digg_bodytext = '  As a part of a client portal project we had a requirement to load documents displayed in the portal from a SharePoint document library. This seems like quite an interesting idea, because you don\'t need to build any fancy Content Management System (CMS) into your site for people to upload content and documents; they will j';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;!--tags C# Microsoft.NET ASP.NET Sharepoint --&gt;
&lt;p&gt;As a part of a client portal project we had a requirement to load documents displayed in the portal from a SharePoint document library. This seems like quite an interesting idea, because you don't need to build any fancy Content Management System (CMS) into your site for people to upload content and documents; they will just use standard SharePoint user interface to save documents into document library and your portal will take the content from there.&lt;/p&gt;

&lt;p&gt;That's why I decided to create a generic component which will take documents from a document library on SharePoint and publish them as a part of any website. &lt;/p&gt;

&lt;p&gt;The component loads data from a SharePoint Document Library: &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/media/blogs/team/sharepointDocuments/Sharepoint.png&quot; target=&quot;_blank&quot;&gt;&lt;img title=&quot;Sharepoint&quot; src=&quot;/media/blogs/team/sharepointDocuments/Sharepoint_thumb.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And displays them inside a standard ASP.NET web application:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/media/blogs/team/sharepointDocuments/Connector.png&quot; target=&quot;_blank&quot;&gt;&lt;img title=&quot;Connector&quot; src=&quot;/media/blogs/team/sharepointDocuments/Connector_thumb.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article describes how you can build such solution.&lt;/p&gt;
&lt;a href=&quot;http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net#more36&quot;&gt;Read more &amp;raquo;&lt;/a&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Publishing documents from Microsoft SharePoint on an ASP.NET website';
digg_bodytext = '  As a part of a client portal project we had a requirement to load documents displayed in the portal from a SharePoint document library. This seems like quite an interesting idea, because you don\'t need to build any fancy Content Management System (CMS) into your site for people to upload content and documents; they will j';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><!--tags C# Microsoft.NET ASP.NET Sharepoint -->
<p>As a part of a client portal project we had a requirement to load documents displayed in the portal from a SharePoint document library. This seems like quite an interesting idea, because you don't need to build any fancy Content Management System (CMS) into your site for people to upload content and documents; they will just use standard SharePoint user interface to save documents into document library and your portal will take the content from there.</p>

<p>That's why I decided to create a generic component which will take documents from a document library on SharePoint and publish them as a part of any website. </p>

<p>The component loads data from a SharePoint Document Library: </p>

<p><a href="http://blog.memos.cz/media/blogs/team/sharepointDocuments/Sharepoint.png" target="_blank"><img title="Sharepoint" src="http://blog.memos.cz/media/blogs/team/sharepointDocuments/Sharepoint_thumb.png" border="0" /></a> </p>

<p>And displays them inside a standard ASP.NET web application:</p>

<p><a href="http://blog.memos.cz/media/blogs/team/sharepointDocuments/Connector.png" target="_blank"><img title="Connector" src="http://blog.memos.cz/media/blogs/team/sharepointDocuments/Connector_thumb.png" border="0" /></a></p>

<p>This article describes how you can build such solution.</p>
<a href="http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net#more36">Read more &raquo;</a><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2009/04/21/publishing-sharepoint-documents-asp-net#comments</comments>
		</item>
				<item>
			<title>Linux under VirtualPC 2007</title>
			<link>http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux</link>
			<pubDate>Tue, 03 Mar 2009 11:21:14 +0000</pubDate>			<dc:creator>ePavel</dc:creator>
			<category domain="main">Virtualization</category>			<guid isPermaLink="false">30@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Linux under VirtualPC 2007';
digg_bodytext = 'Recently I\'ve been struggling with setting up any Linux distribution under VirtualPC 2007. I needed to test a Firefox plug-in under Linux and didn\'t have a physical Linux machine.    I\'ve tried several distribution and the problem was always with graphics - I didn\'t get the system working in graphical mode. As I found out t';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Recently I've been struggling with setting up any Linux distribution under VirtualPC 2007. I needed to test a Firefox plug-in under Linux and didn't have a physical Linux machine.&lt;/p&gt;

&lt;p&gt;I've tried several distribution and the problem was always with graphics - I didn't get the system working in graphical mode. As I found out the problem was in a colour depth - it should be 16bit.&lt;/p&gt;

&lt;p&gt;I finally succeeded with PCLinuxOS 2007.&lt;br /&gt;&lt;br /&gt;
&lt;img src=&quot;http://blog.memos.cz/media/blogs/team/.evocache/screeenshot640x480.gif/fit-320x320.gif&quot; alt=&quot;Linux under VirtualPC 2007 &quot; title=&quot;Linux under VirtualPC 2007 &quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can download the vhd file here:&lt;br /&gt;
&lt;a href=&quot;http://rapidshare.com/files/204785798/linux_vhd.part01.rar.html&quot; target=&quot;_new&quot;&gt;http://rapidshare.com/files/204785798/linux_vhd.part01.rar.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://rapidshare.com/files/204794369/linux_vhd.part02.rar.html&quot; target=&quot;_new&quot;&gt;http://rapidshare.com/files/204794369/linux_vhd.part02.rar.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://rapidshare.com/files/204802696/linux_vhd.part03.rar.html&quot; target=&quot;_new&quot;&gt;http://rapidshare.com/files/204802696/linux_vhd.part03.rar.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or go to &lt;a href=&quot;http://en.ofgsoftware.com/web/virtualizacion/virtualpc2007/virtualpc2007_equiposvirtuales.html&quot; target=&quot;_new&quot;&gt; this page&lt;/a&gt;, where you can download other pre installed virtual machines.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Linux under VirtualPC 2007';
digg_bodytext = 'Recently I\'ve been struggling with setting up any Linux distribution under VirtualPC 2007. I needed to test a Firefox plug-in under Linux and didn\'t have a physical Linux machine.    I\'ve tried several distribution and the problem was always with graphics - I didn\'t get the system working in graphical mode. As I found out t';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><p>Recently I've been struggling with setting up any Linux distribution under VirtualPC 2007. I needed to test a Firefox plug-in under Linux and didn't have a physical Linux machine.</p>

<p>I've tried several distribution and the problem was always with graphics - I didn't get the system working in graphical mode. As I found out the problem was in a colour depth - it should be 16bit.</p>

<p>I finally succeeded with PCLinuxOS 2007.<br /><br />
<img src="http://blog.memos.cz/media/blogs/team/.evocache/screeenshot640x480.gif/fit-320x320.gif" alt="Linux under VirtualPC 2007 " title="Linux under VirtualPC 2007 " /></p>

<p>You can download the vhd file here:<br />
<a href="http://rapidshare.com/files/204785798/linux_vhd.part01.rar.html" target="_new">http://rapidshare.com/files/204785798/linux_vhd.part01.rar.html</a><br />
<a href="http://rapidshare.com/files/204794369/linux_vhd.part02.rar.html" target="_new">http://rapidshare.com/files/204794369/linux_vhd.part02.rar.html</a><br />
<a href="http://rapidshare.com/files/204802696/linux_vhd.part03.rar.html" target="_new">http://rapidshare.com/files/204802696/linux_vhd.part03.rar.html</a></p>

<p>Or go to <a href="http://en.ofgsoftware.com/web/virtualizacion/virtualpc2007/virtualpc2007_equiposvirtuales.html" target="_new"> this page</a>, where you can download other pre installed virtual machines.</p><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2009/03/03/virtual-pc-2007-linux#comments</comments>
		</item>
				<item>
			<title>Outlook Memory Management</title>
			<link>http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management</link>
			<pubDate>Tue, 09 Sep 2008 20:00:29 +0000</pubDate>			<dc:creator>Lukas Neumann</dc:creator>
			<category domain="main">Microsoft Outlook</category>			<guid isPermaLink="false">27@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Outlook Memory Management';
digg_bodytext = '  &amp;quot;A complete guide to avoid memory leaks and unwanted caching in Office&amp;quot;    You may wonder why one should worry about memory management in C# (or any .NET application); the mighty Garbage Collector (GC) built into Common Language Runtime (CLR) should spare us from messing around memory management till the end of ';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;!--tags C# Microsoft.NET Outlook COM--&gt;
&lt;p&gt;&lt;b&gt;&amp;quot;A complete guide to avoid memory leaks and unwanted caching in Office&amp;quot;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;You may wonder why one should worry about memory management in C# (or any .NET application); the mighty &lt;a href=&quot;http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)&quot; target=&quot;_blank&quot;&gt;Garbage Collector&lt;/a&gt; (GC) built into Common Language Runtime (CLR) should spare us from messing around memory management till the end of time (this is one of the reasons why we chose .NET and why we make fun of C/C++ developers, right ?). Well Garbage Collector may serve us well as long as we are inside our &amp;quot;managed world&amp;quot;, but as soon as your code make calls to COM (which is exactly what you have to do if you want to work with Outlook or any other Office application) Garbage Collector won't always save you. I'm not saying GC will not do its job (it eventually will), but the problem is that you cannot tell when it will happen, i.e. when the GC will free unused objects and their COM references. In this article I'd like to illustrate using an example of Outlook automation that this may sometimes be a problem.&lt;/p&gt;
&lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management#more27&quot;&gt;Read more &amp;raquo;&lt;/a&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Outlook Memory Management';
digg_bodytext = '  &quot;A complete guide to avoid memory leaks and unwanted caching in Office&quot;    You may wonder why one should worry about memory management in C# (or any .NET application); the mighty Garbage Collector (GC) built into Common Language Runtime (CLR) should spare us from messing around memory management till the end of ';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><!--tags C# Microsoft.NET Outlook COM-->
<p><b>&quot;A complete guide to avoid memory leaks and unwanted caching in Office&quot;</b></p>

<p>You may wonder why one should worry about memory management in C# (or any .NET application); the mighty <a href="http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)" target="_blank">Garbage Collector</a> (GC) built into Common Language Runtime (CLR) should spare us from messing around memory management till the end of time (this is one of the reasons why we chose .NET and why we make fun of C/C++ developers, right ?). Well Garbage Collector may serve us well as long as we are inside our &quot;managed world&quot;, but as soon as your code make calls to COM (which is exactly what you have to do if you want to work with Outlook or any other Office application) Garbage Collector won't always save you. I'm not saying GC will not do its job (it eventually will), but the problem is that you cannot tell when it will happen, i.e. when the GC will free unused objects and their COM references. In this article I'd like to illustrate using an example of Outlook automation that this may sometimes be a problem.</p>
<a href="http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management#more27">Read more &raquo;</a><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2008/09/09/outlook-memory-management#comments</comments>
		</item>
				<item>
			<title>Wake On LAN in C#</title>
			<link>http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp</link>
			<pubDate>Thu, 12 Jun 2008 15:26:30 +0000</pubDate>			<dc:creator>Lukas Neumann</dc:creator>
			<category domain="main">.NET Framework</category>			<guid isPermaLink="false">26@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Wake On LAN in C#';
digg_bodytext = 'Lately I came across a requirement for an ability to remotely turn on computers in our company. Couple of team members (including me...) tend to work from home sometimes so they leave their PCs running when they leave the office so the next day they could access it over Remote Desktop. Do you spot a problem already? To be h';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;!--tags Wake+On+Lan Networking C# Microsoft.NET WOL--&gt;&lt;p&gt;Lately I came across a requirement for an ability to remotely turn on computers in our company. Couple of team members (including me...) tend to work from home sometimes so they leave their PCs running when they leave the office so the next day they could access it over &lt;a href=&quot;http://en.wikipedia.org/wiki/Remote_Desktop_Protocol&quot;&gt;Remote Desktop&lt;/a&gt;. Do you spot a problem already? To be honest I did not realise this was a problem either ... until an electricity bill came in. The workstation PCs are running nonstop (no one really bothers to switch them off, what if they did not go to the office tomorrow ...), which obviously has very negative impact on the electricity consumption in our office. &lt;/p&gt;  &lt;p&gt;So it was clear we need to do something about it. One can switch off a PC using Remote Desktop very easily (you can do it directly from Start menu), but having ability to switch off a computer remotely is useless unless you can then remotely switch on the computer again. And that is where Wake on LAN finds its place.&lt;/p&gt;  &lt;h3&gt;&amp;quot;Magic Packet&amp;quot;&lt;/h3&gt;  &lt;p&gt;Wake On LAN (sometimes referred as WOL or WoL) is a marketing term used for ability to bring computer out of Stand-By mode by sending it a special packet, called &amp;quot;Magic Packet&amp;quot;. &lt;/p&gt;  &lt;p&gt;When you shutdown Windows, all modern ATX-power based PCs do not switch off completely. Instead they enter a Stand-By mode, which means RAM, CPU and hard drives are switched off, but motherboard itself and a network card are still powered. To determine if your network card supports WOL, shut down your PC and check the Link LED on the network card - if it is still active, your network card is still powered and should support Wake on LAN.&lt;/p&gt;  &lt;p&gt;Even though a PC is shut down, the network card is listening on the data layer (usually Ethernet) level and scans incoming packets for special character sequence. If it detects the sequence, it will turn on the PC. This sequence, called Magic Packet, has following structure:&lt;/p&gt;  &lt;p&gt;&lt;img alt=&quot;MagicPacket&quot; src=&quot;http://blog.memos.cz/media/blogs/team/wakeonlan/magicpacket.png&quot; border=&quot;0&quot; /&gt; &lt;/p&gt; &lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp#more26&quot;&gt;Read more &amp;raquo;&lt;/a&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Wake On LAN in C#';
digg_bodytext = 'Lately I came across a requirement for an ability to remotely turn on computers in our company. Couple of team members (including me...) tend to work from home sometimes so they leave their PCs running when they leave the office so the next day they could access it over Remote Desktop. Do you spot a problem already? To be h';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><!--tags Wake+On+Lan Networking C# Microsoft.NET WOL--><p>Lately I came across a requirement for an ability to remotely turn on computers in our company. Couple of team members (including me...) tend to work from home sometimes so they leave their PCs running when they leave the office so the next day they could access it over <a href="http://en.wikipedia.org/wiki/Remote_Desktop_Protocol">Remote Desktop</a>. Do you spot a problem already? To be honest I did not realise this was a problem either ... until an electricity bill came in. The workstation PCs are running nonstop (no one really bothers to switch them off, what if they did not go to the office tomorrow ...), which obviously has very negative impact on the electricity consumption in our office. </p>  <p>So it was clear we need to do something about it. One can switch off a PC using Remote Desktop very easily (you can do it directly from Start menu), but having ability to switch off a computer remotely is useless unless you can then remotely switch on the computer again. And that is where Wake on LAN finds its place.</p>  <h3>&quot;Magic Packet&quot;</h3>  <p>Wake On LAN (sometimes referred as WOL or WoL) is a marketing term used for ability to bring computer out of Stand-By mode by sending it a special packet, called &quot;Magic Packet&quot;. </p>  <p>When you shutdown Windows, all modern ATX-power based PCs do not switch off completely. Instead they enter a Stand-By mode, which means RAM, CPU and hard drives are switched off, but motherboard itself and a network card are still powered. To determine if your network card supports WOL, shut down your PC and check the Link LED on the network card - if it is still active, your network card is still powered and should support Wake on LAN.</p>  <p>Even though a PC is shut down, the network card is listening on the data layer (usually Ethernet) level and scans incoming packets for special character sequence. If it detects the sequence, it will turn on the PC. This sequence, called Magic Packet, has following structure:</p>  <p><img alt="MagicPacket" src="http://blog.memos.cz/media/blogs/team/wakeonlan/magicpacket.png" border="0" /> </p> <a href="http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp#more26">Read more &raquo;</a><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp#comments</comments>
		</item>
				<item>
			<title>Asynchronous processing in .NET (ThreadPool and BeginInvoke demystified)</title>
			<link>http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net</link>
			<pubDate>Mon, 09 Jun 2008 22:30:35 +0000</pubDate>			<dc:creator>Lukas Neumann</dc:creator>
			<category domain="main">.NET Framework</category>			<guid isPermaLink="false">25@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Asynchronous processing in .NET (ThreadPool and BeginInvoke demystified)';
digg_bodytext = 'If you develop client applications, very often you come across an operation which is taking long to complete. Basically, you have 2 options; You can either do nothing about it, let the application &amp;quot;freeze&amp;quot; and let user wait for end of the operation. The problem is that the user doesn\'t know what is happening so he';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;If you develop client applications, very often you come across an operation which is taking long to complete. Basically, you have 2 options; You can either do nothing about it, let the application &amp;quot;freeze&amp;quot; and let user wait for end of the operation. The problem is that the user doesn't know what is happening so he will become frustrated (&amp;quot;Damn, this app is really slow...&amp;quot;) and may even eventually kill the application from the task manager, thanks to the &amp;quot;feature&amp;quot; of Windows which will mark the window as &amp;quot;Not Responding&amp;quot; and will offer the user an option to end the process.&lt;/p&gt;  &lt;p&gt;That is why asynchronous processing (aka. processing in background) comes in place. The idea is that you display a dialogue to the user that informs him/her that there is something going on and that it may take some time to complete; or you can even let the user work with the application and literally do all the processing in the background.&lt;/p&gt;  &lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net#more25&quot;&gt;Read more &amp;raquo;&lt;/a&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'Asynchronous processing in .NET (ThreadPool and BeginInvoke demystified)';
digg_bodytext = 'If you develop client applications, very often you come across an operation which is taking long to complete. Basically, you have 2 options; You can either do nothing about it, let the application &quot;freeze&quot; and let user wait for end of the operation. The problem is that the user doesn\'t know what is happening so he';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><p>If you develop client applications, very often you come across an operation which is taking long to complete. Basically, you have 2 options; You can either do nothing about it, let the application &quot;freeze&quot; and let user wait for end of the operation. The problem is that the user doesn't know what is happening so he will become frustrated (&quot;Damn, this app is really slow...&quot;) and may even eventually kill the application from the task manager, thanks to the &quot;feature&quot; of Windows which will mark the window as &quot;Not Responding&quot; and will offer the user an option to end the process.</p>  <p>That is why asynchronous processing (aka. processing in background) comes in place. The idea is that you display a dialogue to the user that informs him/her that there is something going on and that it may take some time to complete; or you can even let the user work with the application and literally do all the processing in the background.</p>  <a href="http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net#more25">Read more &raquo;</a><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2008/06/10/asynchronous-processing-in-net#comments</comments>
		</item>
				<item>
			<title>MEMOS Blog is live!</title>
			<link>http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live</link>
			<pubDate>Sun, 08 Jun 2008 14:34:32 +0000</pubDate>			<dc:creator>Lukas Neumann</dc:creator>
			<category domain="main">General</category>			<guid isPermaLink="false">24@http://blog.memos.cz/</guid>
						<description>&lt;div style='float:left;margin-right: 5px'&gt;
&lt;script type='text/javascript'&gt;digg_url = 'http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'MEMOS Blog is live!';
digg_bodytext = 'As the number of people in our team increases, it becomes harder and harder to share the knowledge amongst the team members, which is why I decided to create this site. The blog should be mainly focused on interesting features or problems with current and future technologies, such as Microsoft .NET or Microsoft Office Suite';
&lt;/script&gt;
			&lt;script src='http://digg.com/tools/diggthis.js' type='text/javascript'&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;As the number of people in our team increases, it becomes harder and harder to share the knowledge amongst the team members, which is why I decided to create this site. The blog should be mainly focused on interesting features or problems with current and future technologies, such as Microsoft .NET or Microsoft Office Suite. &lt;/p&gt;  &lt;p&gt;Hopefully this site will become valuable source of information not just for the Memos team, but also for other developers, and will help to reduce the development time, either by offering solutions or guidelines to solve particular problems.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;LukeN 080608&lt;/em&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style='float:left;margin-right: 5px'>
<script type='text/javascript'>digg_url = 'http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live';
 digg_url = digg_url.replace(/amp;/g, ''); 
 digg_bgcolor = '#FFFFFF';
digg_skin = 'compact';
digg_title = 'MEMOS Blog is live!';
digg_bodytext = 'As the number of people in our team increases, it becomes harder and harder to share the knowledge amongst the team members, which is why I decided to create this site. The blog should be mainly focused on interesting features or problems with current and future technologies, such as Microsoft .NET or Microsoft Office Suite';
</script>
			<script src='http://digg.com/tools/diggthis.js' type='text/javascript'></script></div><p>As the number of people in our team increases, it becomes harder and harder to share the knowledge amongst the team members, which is why I decided to create this site. The blog should be mainly focused on interesting features or problems with current and future technologies, such as Microsoft .NET or Microsoft Office Suite. </p>  <p>Hopefully this site will become valuable source of information not just for the Memos team, but also for other developers, and will help to reduce the development time, either by offering solutions or guidelines to solve particular problems.</p>  <p><em>LukeN 080608</em></p><div class="item_footer"><p><small><a href="http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://blog.memos.cz/index.php/team/2008/06/08/memos-blog-is-live#comments</comments>
		</item>
			</channel>
</rss>
