<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Chris Tacke - Community</title>
    <link>http://blog.opennetcf.com/ctacke/</link>
    <description>Bringing Managed Code to the Embedded World</description>
    <copyright>Chris Tacke</copyright>
    <lastBuildDate>Fri, 26 Jun 2009 14:24:33 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>ctacke@opennetcf.com</managingEditor>
    <webMaster>ctacke@opennetcf.com</webMaster>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=364731df-b779-4518-95b4-45bf9c1f7dc7</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,364731df-b779-4518-95b4-45bf9c1f7dc7.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As you may have guessed from some of my recent blog entries, we're making a push to
get a lot of our shared source code out to the Codeplex servers.  Our serial
library is the latest one to make the move.  It's now available at <a href="http://serial.codeplex.com">http://serial.codeplex.com</a>. 
As with all of these libraries, if you have the desire to contribute, fix, extend,
or whatever just let us know and we'll add you as a developer.
</p>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=364731df-b779-4518-95b4-45bf9c1f7dc7" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>OpenNETCF.IO.Serial Library moved to Codeplex</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,364731df-b779-4518-95b4-45bf9c1f7dc7.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2009/06/26/OpenNETCFIOSerialLibraryMovedToCodeplex.aspx</link>
      <pubDate>Fri, 26 Jun 2009 14:24:33 GMT</pubDate>
      <description>&lt;p&gt;
As you may have guessed from some of my recent blog entries, we're making a push to
get a lot of our shared source code out to the Codeplex servers.&amp;nbsp; Our serial
library is the latest one to make the move.&amp;nbsp; It's now available at &lt;a href="http://serial.codeplex.com"&gt;http://serial.codeplex.com&lt;/a&gt;.&amp;nbsp;
As with all of these libraries, if you have the desire to contribute, fix, extend,
or whatever just let us know and we'll add you as a developer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=364731df-b779-4518-95b4-45bf9c1f7dc7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>.NET Compact Framework</category>
      <category>Community</category>
      <category>Desktop Development</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=8f35165e-f4c9-4042-bf33-c02c6a555d0f</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,8f35165e-f4c9-4042-bf33-c02c6a555d0f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In an effort to clean up our servers, to make code easier to find, and to hopefully
make it easier for the community at-large to contribute, we've moved our popular Desktop
Communication library over to the Codeplex servers.
</p>
        <p>
Visit the project at <a href="http://rapi.codeplex.com">rapi.codeplex.com</a>.
</p>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=8f35165e-f4c9-4042-bf33-c02c6a555d0f" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>OpenNETCF.Desktop.Communication library has moved to Codeplex</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,8f35165e-f4c9-4042-bf33-c02c6a555d0f.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2009/06/25/OpenNETCFDesktopCommunicationLibraryHasMovedToCodeplex.aspx</link>
      <pubDate>Thu, 25 Jun 2009 23:38:36 GMT</pubDate>
      <description>&lt;p&gt;
In an effort to clean up our servers, to make code easier to find, and to hopefully
make it easier for the community at-large to contribute, we've moved our popular Desktop
Communication library over to the Codeplex servers.
&lt;/p&gt;
&lt;p&gt;
Visit the project at &lt;a href="http://rapi.codeplex.com"&gt;rapi.codeplex.com&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=8f35165e-f4c9-4042-bf33-c02c6a555d0f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>Desktop Development</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=afbbd8b7-1a77-4331-90e0-ba53a43c179a</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,afbbd8b7-1a77-4331-90e0-ba53a43c179a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Over the past few months we've been working hard to consolidate the products we at
OpenNETCF offer.  What this means is that products that didn't sell well or that
had high support loads compared to sales got dropped.  Our Telephony library
is one of those that we decided to discontinue.  But that's good news for all! 
Instead of just letting it wither and die in the depths of our own source control
server, we figure it might as well be thrown out to the community to see if it will
flourish.
</p>
        <p>
SO with that, we give you the OpenNETCF.Telephony Library, <a href="http://tapi.codeplex.com">hosted
over at Codeplex as tapi.codeplex.com</a>.  Enjoy.
</p>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=afbbd8b7-1a77-4331-90e0-ba53a43c179a" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>OpenNETCF.Telephony library (TAPI) released under shared-source license</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,afbbd8b7-1a77-4331-90e0-ba53a43c179a.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2009/06/25/OpenNETCFTelephonyLibraryTAPIReleasedUnderSharedsourceLicense.aspx</link>
      <pubDate>Thu, 25 Jun 2009 23:06:39 GMT</pubDate>
      <description>&lt;p&gt;
Over the past few months we've been working hard to consolidate the products we at
OpenNETCF offer.&amp;nbsp; What this means is that products that didn't sell well or that
had high support loads compared to sales got dropped.&amp;nbsp; Our Telephony library
is one of those that we decided to discontinue.&amp;nbsp; But that's good news for all!&amp;nbsp;
Instead of just letting it wither and die in the depths of our own source control
server, we figure it might as well be thrown out to the community to see if it will
flourish.
&lt;/p&gt;
&lt;p&gt;
SO with that, we give you the OpenNETCF.Telephony Library, &lt;a href="http://tapi.codeplex.com"&gt;hosted
over at Codeplex as tapi.codeplex.com&lt;/a&gt;.&amp;nbsp; Enjoy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=afbbd8b7-1a77-4331-90e0-ba53a43c179a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=6244975c-6093-494d-b0cc-d33b25136f18</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,6244975c-6093-494d-b0cc-d33b25136f18.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
OpenNETCF used to have a product that provided RAS capabilities.  Well Microsoft
deprecated RAS in WindowsMobile - starting with WinMo 5.0 as near as I can figure
- in favor of Connection Manager.  That depracation actually broke RAS in some
scenarios.  FOr example, if you create a RAS connection and then try to use a
managed TcpClient, it will try to create it's own connection through the Connection
Manager instead of using the connection you created through RAS.
</p>
        <p>
What this did was skyrocket our support incidents for something that we sold very,
very few licenses for.  In the interest of keeping our sanity, yet allowing people
using plain of Windows CE to still use RAS, we made the decision to just make it a
shared source project.  It's now <a href="http://rascf.codeplex.com">out on CodePlex</a>. 
If you need support for it, we still offer consulting services, but everything
is there to get you going.
</p>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=6244975c-6093-494d-b0cc-d33b25136f18" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>RAS, Windows Mobile and Windows CE</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,6244975c-6093-494d-b0cc-d33b25136f18.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2009/03/20/RASWindowsMobileAndWindowsCE.aspx</link>
      <pubDate>Fri, 20 Mar 2009 16:54:05 GMT</pubDate>
      <description>&lt;p&gt;
OpenNETCF used to have a product that provided RAS capabilities.&amp;nbsp; Well Microsoft
deprecated RAS in WindowsMobile - starting with WinMo 5.0 as near as I can figure
- in favor of Connection Manager.&amp;nbsp; That depracation actually broke RAS in some
scenarios.&amp;nbsp; FOr example, if you create a RAS connection and then try to use a
managed TcpClient, it will try to create it's own connection through the Connection
Manager instead of using the connection you created through RAS.
&lt;/p&gt;
&lt;p&gt;
What this did was skyrocket our support incidents for something that we sold very,
very few licenses for.&amp;nbsp; In the interest of keeping our sanity, yet allowing people
using plain of Windows CE to still use RAS, we made the decision to just make it a
shared source project.&amp;nbsp; It's now &lt;a href="http://rascf.codeplex.com"&gt;out on CodePlex&lt;/a&gt;.&amp;nbsp;
If you need support for it, we still&amp;nbsp;offer consulting services, but everything
is there to get you going.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=6244975c-6093-494d-b0cc-d33b25136f18" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>CE Device Development</category>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
      <category>Windows CE Code</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=659ae749-3be7-495f-a03c-2ecec2dc2dea</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,659ae749-3be7-495f-a03c-2ecec2dc2dea.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <title>The OpenNETCF.IoC Framework: Items and Services</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,659ae749-3be7-495f-a03c-2ecec2dc2dea.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2009/03/10/TheOpenNETCFIoCFrameworkItemsAndServices.aspx</link>
      <pubDate>Tue, 10 Mar 2009 13:17:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;&lt;u&gt;Articles in this series&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;a href="http://blog.opennetcf.com/ctacke/2009/03/09/InversionOfControlAndTheCompactFrameworkPartI.aspx"&gt;Part
I: Inversion of Control and the Compact Framework&lt;/a&gt;
&lt;br&gt;
Part II: The OpenNETCF.IoC Framework: Items and Services (this article)&lt;br&gt;
&lt;a href="http://blog.opennetcf.com/ctacke/2009/03/11/PartIIITheOpenNETCFIoCFrameworkEvents.aspx"&gt;Part
III: The OpenNETCF.IoC Framework: Events&lt;/a&gt;
&lt;br&gt;
Part IV: The OpenNETCF.IoC Framework: Performance (TBD)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;Downloads&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;a href="http://ioc.codeplex.com"&gt;Code and Sample available through CodePlex&lt;/a&gt;.&lt;a href="http://blog.opennetcf.com/ctacke/content/binary/OpenNETCF.IoC.0.9.0.zip"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 style="margin: 24pt 0in 0pt;"&gt;&lt;font size="5" color="#365f91" face="Cambria"&gt;The
OpenNETCF.IoC Framework&lt;/font&gt;
&lt;/h1&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Since I don’t expect that everyone has
used &lt;a href="http://msdn.microsoft.com/en-us/library/aa480482.aspx"&gt;the SCSF&lt;/a&gt; and
since the OpenNETCF IoC framework is a very small subset, let’s walk through what
it is and how it works.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;First, the OpenNETCF.IoC framework
is based on the concept of “Components.”&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A Component is
simply an instance of a class and our framework has two flavors of Components: an
Item and a Service.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Generally speaking, the difference
between an Item and a Service is that an Item is a uniquely-named instance of a Type
(so you can have any number of them provided each instance has a unique name) whereas
there can only be one Instance of a service per registered type (it acts somewhat
like a Singleton).&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Both Items and Services are contained
as collections in a root container called the RootWorkItem (a name that comes from
the CAB framework).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Let’s take a look more in depth at
each of these components and how you might use them together.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For
this example we’ll get a little more concrete that the Cars and People example from
before, and instead look at classes more actual applications might use.&lt;/font&gt;
&lt;/p&gt;
&lt;h3 style="margin: 10pt 0in 0pt;"&gt;&lt;font size="3" color="#4f81bd" face="Cambria"&gt;Items&lt;/font&gt;
&lt;/h3&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;As I mentioned, Items are simply uniquely
named instances of objects.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;They can be of any Type –
the Items collection doesn’t need to contain only a set of a specific type.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The
Items are contained, conveniently enough, in the RootWorkItem.Items collection.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So
exactly what advantages to we gain by putting our items in this collection?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The
primary benefit is that the RootWorkItem becomes an instance manager and, as we’ll
see in a little bit, it can also be a factory.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Let’s assume that our application contains
the following Forms: MenuForm, EntryForm and SettingsForm and to make things simple,
we’ll assume that they are named with their type name.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If
we have these forms in the IoC framework, then any time we need to reference one of
them we can simply do something like this:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;desiredForm &lt;span style="background-color: transparent; font-family: Courier New; color: red; font-size: 11px;"&gt;=&lt;/span&gt; RootWorkItem.Items[“EntryForm”];&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;and ta-da, we get the instance of the
Form.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;We don’t need to pass around a reference to it or
store it in some other application global location.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So
that’s pretty useful right there.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;But the RootWorkItem
really is just an application global, right, so it must provide some other benefit.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well
it’s also a factory.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If we want to create the entry form
we can use a basic create-and-insert mechanism like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;EntryForm
form &lt;span style="background-color: transparent; font-family: Courier New; color: red; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;new&lt;/span&gt; EntryForm();&lt;br&gt;
RootWorkItem.Items.Add(form, “EntryForm”);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;But
that really isn’t all that interesting.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Where it gets
interesting is that you can let the framework do the construction for you by simply
giving it a Type and name (the name is actually optional, as the framework will assign
it a GUID if you don’t provide one):&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;RootWorkItem.AddNew&amp;lt;EntryForm&amp;gt;(“EntryForm”);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;That’s
handy.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;No need to call the object contructor to get an
instance and then stuff it into the collection.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Less code
is always a good thing.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;But what else can it do (right
now I’m feeling a bit like Ron Popeil)?&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Well that’s not all!&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Where
it gets fun is in its ability to do injection.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This requires
a little more complex of a scenario.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Let’s assume that
the MenuForm requires an instance of both an EntryForm and a SettingsForm.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Something
like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;class&lt;/span&gt; MenuForm&lt;br&gt;
{&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; MenuForm(EntryForm entryForm, MenuForm menuForm) {…}&lt;br&gt;
}&lt;/span&gt;
&lt;o:p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Well the OpenNETCF.IoC framework can
actually do these injections for you – all you have to do it provide it a little direction
with attributes.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;If we simply decorate the constructor
with the InjectionConstructor attribute, the framework will search the Items collection
for existing items of the proper type to inject.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So the
MenuForm looks like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;class&lt;/span&gt; MenuForm&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; [InjectionConstructor]&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; MenuForm(EntryForm entryForm, MenuForm menuForm) {…}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;And
construction now looks like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;RootWorkItem.AddNew&amp;lt;SettingsForm&amp;gt;(“SettingsForm”);&lt;br&gt;
RootWorkItem.AddNew&amp;lt;EntryForm&amp;gt;(“EntryForm”);&lt;br&gt;
RootWorkItem.AddNew&amp;lt;MenuForm&amp;gt;(“MenuForm”);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;And
the magic of the OpenNETCF.IoC framework will inject the first two instances into
the third.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;An interesting note here is that the Injection
Constructor does not have to be public.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The OpenNETCF.IoC
framework looks for internal and private constructors as well so you can actually
create objects that can only be generated via injection if you wish.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Of course the framework also supports
Injection Methods as well, in the event that an InjectionConstructor doesn’t meet
your needs:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; &lt;/font&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;class&lt;/font&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt; MenuForm&lt;br&gt;
{&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; MenuForm() {…}&lt;br&gt;
&lt;br&gt;
&amp;nbsp; [InjectionMethod]&lt;br&gt;
&amp;nbsp; void InjectEntryForm(EntryForm entryForm) {…}&lt;br&gt;
&lt;br&gt;
&amp;nbsp; [InjectionMethod]&lt;br&gt;
&amp;nbsp; void InjectSettingsForm(SettingsForm settingsForm) {…}&lt;br&gt;
}&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;&lt;/font&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;But
wait, there’s more!&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;In the examples so far the RootWorkItem.Items
collection must contain the SettingsForm and EntryForm before the MenuForm is created.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well
what if we are lazy and don’t even want to do that?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well
the OpenNETCF.IoC framework can handle that too.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Just
add the CreateNew attribute like this:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;class&lt;/span&gt; MenuForm&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; [InjectionConstructor]&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; MenuForm([CreateNew]EntryForm entryForm, [CreateNew]MenuForm menuForm)
{…}&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 0pt;" class="MsoNoSpacing"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;And the framework will create a new
instance of the Type if it can’t find it in the Items collection. Construction of
all three objects and injecting them now looks like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 0pt;" class="MsoNoSpacing"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;RootWorkItem.AddNew&amp;lt;MenuForm&amp;gt;(“MenuForm”);&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Extremely simple and clean.&lt;/font&gt;
&lt;/p&gt;
&lt;h3 style="margin: 10pt 0in 0pt;"&gt;&lt;font size="3" color="#4f81bd" face="Cambria"&gt;Services&lt;/font&gt;
&lt;/h3&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;The RootWorkItem also contains a collection
of Services.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;A Service is very similar to an Item except
for the fact that there can only be one service of any given registered type (we’ll
covered what “registered” means in a moment).&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The collection
provides a very similar set of methods and attributes as items.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Again,
let’s consider a more concrete example.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Assume your application
has a class that handles reading and setting configurations.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;There
really would only be one instance of this class and in a lot of classic cases people
would use the global-wrapped-in-a-new-name called a Singleton.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;In the OpenNETCF.IoC framework this
would be a service.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Since there can only be one pre registered
type, there’s no need to name a Service – the registration type becomes the identifier.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So
as a simple construct/add/retrieve a Service operation would look&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;like
this:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; &lt;/font&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;Configuration
config &lt;span style="background-color: transparent; font-family: Courier New; color: red; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;new&lt;/span&gt; Configuration();&lt;br&gt;
RootWorkItem.Services.Add&amp;lt;Configuration&amp;gt;(config);&lt;br&gt;
…&lt;br&gt;
Configuration retrievedConfig &lt;span style="background-color: transparent; font-family: Courier New; color: red; font-size: 11px;"&gt;=&lt;/span&gt; RootWorkItem.Services.Get&amp;lt;Configuration&amp;gt;();&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;&lt;/font&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;As
with the Items collection, there is a lot more power and convenience in the framework.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;First,
we can have the framework do construction for us:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;RootWorkItem.Services.AddNew&amp;lt;Configuration&amp;gt;();&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;Like the Items collection, InjectionConstructor
or InjectionMethod attributes can be used to control which constructor for the service
class gets called.&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;The OpenNETCF.IoC framework also offers
lazy loading of services, so the service instance isn’t actually created until it
is first accessed (instead of when it’s added).&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;RootWorkItem.Services.AddOnDemand&amp;lt;Configuration&amp;gt;();&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;We saw earlier that the OpenNETCF.IoC
framework would walk the Items collection looking for instances to use during injection.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Well
what if an object depends on a Service rather than another Item?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;The
framework also provides a mechanism for that as well using the ServiceDependency attribute.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So
to inject a Service into a consumer class using Constructor Injection it would look
like this:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;class&lt;/span&gt; ServiceConsumer&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; [InjectionConstructor]&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; ServiceConsumer([ServiceDependency]Configuration config) {…}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;And
of course there is a way to do setter injection instead of constructor injection.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Here
it injects into a property instead of using a method like the Items collection:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; 
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;class&lt;/span&gt; ServiceConsumer&lt;br&gt;
{&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; ServiceConsumer() {…}&lt;br&gt;
&lt;br&gt;
&amp;nbsp; [ServiceDependency]&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;&amp;nbsp;
public&lt;/span&gt; Configuration Config { set; get; }&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p style="margin: 0in 0in 10pt;" class="MsoNormal"&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt;And if you want the framework to construct
the service if it doesn’t already exist, you simply set the EnsureExists member of
the ServiceDependency attribute like this:&lt;/font&gt;
&lt;/p&gt;
&lt;font size="3" color="#000000" face="Calibri"&gt; &lt;/font&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;[ServiceDependency(EnsureExists=&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;true&lt;/span&gt;)]&lt;br&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: blue; font-size: 11px;"&gt;public&lt;/span&gt; Configuration
Config { set; get; }&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color: transparent; font-family: Courier New; color: black; font-size: 11px;"&gt;&lt;/span&gt;&lt;font size="3" color="#000000" face="Calibri"&gt;&lt;/font&gt;&lt;span style="line-height: 115%; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt;&lt;font color="#000000"&gt;The
only other aspect of a Service that an Item does not have is a “registration type”.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;This
allows you to register a service instance as a type other than its actual base type.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;For
example you may have a Configuration class that you want to register as a service,
but you want to register it as an IConfiguration (this would allow consumers to extract
the service by the interface type without ever knowing about or having a reference
to the concrete implementation).&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="line-height: 115%; font-family: 'Calibri','sans-serif'; font-size: 11pt;"&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Up next: &lt;a href="http://blog.opennetcf.com/ctacke/2009/03/11/PartIIITheOpenNETCFIoCFrameworkEvents.aspx"&gt;The
OpenNETCF.IoC Framework: Event Publication and Subscription&lt;/a&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=659ae749-3be7-495f-a03c-2ecec2dc2dea" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
      <category>OpenNETCF.IoC</category>
      <category>Patterns and Practices</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=947eaf63-d1d2-43e1-ac95-c43d9e874416</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,947eaf63-d1d2-43e1-ac95-c43d9e874416.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Today I saw two separate posts on pretty
much the same question.  How can you determine if the foreground window changes
in a WinMo application?  Moreover, how can you determine if the new foreground
window is your own, or in some other process?  My initial thoughts were to do
some work in the Form's Deactivate event, but that would lead to having to plumb it
into every Form, and then you'd still need special case handlers for MessageBoxes
and Dialogs and it would be an unmaintainable pain in the ass. I decided to put some
time aside this afternoon and see if I could come up with a better solution, and what
I came up with is outlined in a new article entitled '<a href="http://community.opennetcf.com/articles/cf/archive/2008/08/13/determining-form-and-process-changes-in-windows-ce.aspx">Determining
Form and Process Changes in Windows CE</a>'.<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=947eaf63-d1d2-43e1-ac95-c43d9e874416" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>New Article: Determining Form and Process Changes in Windows CE</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,947eaf63-d1d2-43e1-ac95-c43d9e874416.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2008/08/13/NewArticleDeterminingFormAndProcessChangesInWindowsCE.aspx</link>
      <pubDate>Wed, 13 Aug 2008 22:14:58 GMT</pubDate>
      <description>Today I saw two separate posts on pretty much the same question.&amp;nbsp; How can you determine if the foreground window changes in a WinMo application?&amp;nbsp; Moreover, how can you determine if the new foreground window is your own, or in some other process?&amp;nbsp; My initial thoughts were to do some work in the Form's Deactivate event, but that would lead to having to plumb it into every Form, and then you'd still need special case handlers for MessageBoxes and Dialogs and it would be an unmaintainable pain in the ass. I decided to put some time aside this afternoon and see if I could come up with a better solution, and what I came up with is outlined in a new article entitled '&lt;a href="http://community.opennetcf.com/articles/cf/archive/2008/08/13/determining-form-and-process-changes-in-windows-ce.aspx"&gt;Determining
Form and Process Changes in Windows CE&lt;/a&gt;'.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=947eaf63-d1d2-43e1-ac95-c43d9e874416" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=9d61d40a-734b-4760-9d0f-b4a0cd01fbf2</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,9d61d40a-734b-4760-9d0f-b4a0cd01fbf2.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>We've published a new article on the OpenNETCF Community Site titled "Native
vs. Managed Code: GDI Performance"
</div>
        <div> 
</div>
        <div>
          <a href="http://community.opennetcf.com/articles/cf/archive/2008/05/19/native-vs-managed-code-gdi-performance.aspx">http://community.opennetcf.com/articles/cf/archive/2008/05/19/native-vs-managed-code-gdi-performance.aspx</a>
        </div>
        <div> 
</div>
        <div>In it, I look at the performance differences between native and managed code
making GDI calls.
</div>
        <div> 
</div>
        <div>In case you missed them, our other recently published articles include:
</div>
        <div> 
</div>
        <div>- Performance Implications of Crossing the P/Invoke Boundary
</div>
        <div>- An Introduction to WCF for Device Developers<br />
- Getting a Millisecond-Resolution DateTime under Windows CE<br />
- Using GDI+ on Windows Mobile<br />
- Sharing Windows Mobile Ink with the Desktop<br />
- OpenNETCF Mobile Ink Library for Windows Mobile 6<br />
- Improving Data Access Performance with Data Caching<br />
- Developing Connected Smart Device Applications with sqlClient<br />
- Debugging Without ActiveSync<br />
- Image Manipulation in Windows Mobile 5.0<br />
- Don't Fear the Garbage Collector
</div>
        <div> 
</div>
        <div>All of our articles are available online at:<br /><a href="http://community.OpenNETCF.com/articles">http://community.OpenNETCF.com/articles</a></div>
        <div> 
</div>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=9d61d40a-734b-4760-9d0f-b4a0cd01fbf2" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>New Community Article: GDI Performance</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,9d61d40a-734b-4760-9d0f-b4a0cd01fbf2.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2008/05/19/NewCommunityArticleGDIPerformance.aspx</link>
      <pubDate>Mon, 19 May 2008 16:27:16 GMT</pubDate>
      <description>&lt;div&gt;We've published a new article on the OpenNETCF Community Site titled "Native
vs. Managed Code: GDI Performance"
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;&lt;a href="http://community.opennetcf.com/articles/cf/archive/2008/05/19/native-vs-managed-code-gdi-performance.aspx"&gt;http://community.opennetcf.com/articles/cf/archive/2008/05/19/native-vs-managed-code-gdi-performance.aspx&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;In it, I look at the performance differences between native and managed code
making GDI calls.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;In case you missed them, our other recently published articles include:
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;- Performance Implications of Crossing the P/Invoke Boundary
&lt;/div&gt;
&lt;div&gt;- An Introduction to WCF for Device Developers&lt;br&gt;
- Getting a Millisecond-Resolution DateTime under Windows CE&lt;br&gt;
- Using GDI+ on Windows Mobile&lt;br&gt;
- Sharing Windows Mobile Ink with the Desktop&lt;br&gt;
- OpenNETCF Mobile Ink Library for Windows Mobile 6&lt;br&gt;
- Improving Data Access Performance with Data Caching&lt;br&gt;
- Developing Connected Smart Device Applications with sqlClient&lt;br&gt;
- Debugging Without ActiveSync&lt;br&gt;
- Image Manipulation in Windows Mobile 5.0&lt;br&gt;
- Don't Fear the Garbage Collector
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;All of our articles are available online at:&lt;br&gt;
&lt;a href="http://community.OpenNETCF.com/articles"&gt;http://community.OpenNETCF.com/articles&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=9d61d40a-734b-4760-9d0f-b4a0cd01fbf2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
      <category>Windows CE Code</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=1fb82abe-60e1-4a5a-b4ca-d59b628e1ba0</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,1fb82abe-60e1-4a5a-b4ca-d59b628e1ba0.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">It took me 5 months to actually get it
out the door, but I've just published a new white paper on the performance implications
of P/Invoking in the COmpact Framework.  <a href="http://community.opennetcf.com/articles/cf/archive/2008/01/22/performance-implications-of-crossing-the-p-invoke-boundary.aspx">Check
it out here</a>.<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=1fb82abe-60e1-4a5a-b4ca-d59b628e1ba0" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>New article on P/Invoke</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,1fb82abe-60e1-4a5a-b4ca-d59b628e1ba0.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2008/01/22/NewArticleOnPInvoke.aspx</link>
      <pubDate>Tue, 22 Jan 2008 22:12:07 GMT</pubDate>
      <description>It took me 5 months to actually get it out the door, but I've just published a new white paper on the performance implications of P/Invoking in the COmpact Framework.&amp;nbsp; &lt;a href="http://community.opennetcf.com/articles/cf/archive/2008/01/22/performance-implications-of-crossing-the-p-invoke-boundary.aspx"&gt;Check
it out here&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=1fb82abe-60e1-4a5a-b4ca-d59b628e1ba0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>.NET Compact Framework</category>
      <category>Community</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=999a40bc-a69f-468e-a839-cd515f31fcb7</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,999a40bc-a69f-468e-a839-cd515f31fcb7.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">We just published a new article on using
WCF from device applications on the <a href="http://community.opennetcf.com">Community
site</a>.  <a href="http://community.opennetcf.com/articles/cf/archive/2007/11/29/an-introduction-to-wcf-for-device-developers.aspx">Read
it here</a>.<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=999a40bc-a69f-468e-a839-cd515f31fcb7" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>WCF For Device Developers</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,999a40bc-a69f-468e-a839-cd515f31fcb7.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2007/11/29/WCFForDeviceDevelopers.aspx</link>
      <pubDate>Thu, 29 Nov 2007 19:40:14 GMT</pubDate>
      <description>We just published a new article on using WCF from device applications on the &lt;a href="http://community.opennetcf.com"&gt;Community
site&lt;/a&gt;.&amp;nbsp; &lt;a href="http://community.opennetcf.com/articles/cf/archive/2007/11/29/an-introduction-to-wcf-for-device-developers.aspx"&gt;Read
it here&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=999a40bc-a69f-468e-a839-cd515f31fcb7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>.NET Compact Framework</category>
      <category>Community</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=2d316248-2f9d-4318-ad18-8f1de9d43431</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,2d316248-2f9d-4318-ad18-8f1de9d43431.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">In case you <a href="http://community.opennetcf.com/articles/MainFeed.aspx">missed
it</a>, I published a new article on our <a href="http://community.opennetcf.com">community
site</a> last week on how to get a DateTime.Now equivalent with the milliseconds field
filled in.  <a href="http://community.opennetcf.com/articles/cf/archive/2007/11/20/getting-a-millisecond-resolution-datetime-under-windows-ce.aspx">Read
it here</a>.<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=2d316248-2f9d-4318-ad18-8f1de9d43431" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>Getting a millisecond resolution time in CE</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,2d316248-2f9d-4318-ad18-8f1de9d43431.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2007/11/29/GettingAMillisecondResolutionTimeInCE.aspx</link>
      <pubDate>Thu, 29 Nov 2007 16:20:53 GMT</pubDate>
      <description>In case you &lt;a href="http://community.opennetcf.com/articles/MainFeed.aspx"&gt;missed
it&lt;/a&gt;, I published a new article on our &lt;a href="http://community.opennetcf.com"&gt;community
site&lt;/a&gt; last week on how to get a DateTime.Now equivalent with the milliseconds field
filled in.&amp;nbsp; &lt;a href="http://community.opennetcf.com/articles/cf/archive/2007/11/20/getting-a-millisecond-resolution-datetime-under-windows-ce.aspx"&gt;Read
it here&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=2d316248-2f9d-4318-ad18-8f1de9d43431" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>.NET Compact Framework</category>
      <category>Community</category>
      <category>Compact Framework Code</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=3677d214-91cc-4688-a4c1-bd64f9f1ebb0</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,3677d214-91cc-4688-a4c1-bd64f9f1ebb0.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">After receiving a 16MB zip file of a native
solution from a customer today, I've updated <a href="http://blog.opennetcf.org/ctacke/PermaLink,guid,9a9fb109-e5f1-48cd-a899-aa99b7a62dad.aspx">CleanSweep</a> to
clean out a lot of the crap created by the native build process (the last version
was mostly for managed code).<br /><br />
I've also added very, very basic command-line support.  Right now if you provide
no command line, it will clean the directory it is run from.  If you want to
clean another folder, you pass the full path to the foilder to clean as the command
line.<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=3677d214-91cc-4688-a4c1-bd64f9f1ebb0" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>CleanSweep update</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,3677d214-91cc-4688-a4c1-bd64f9f1ebb0.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2007/10/16/CleanSweepUpdate.aspx</link>
      <pubDate>Tue, 16 Oct 2007 20:17:30 GMT</pubDate>
      <description>After receiving a 16MB zip file of a native solution from a customer today, I've updated &lt;a href="http://blog.opennetcf.org/ctacke/PermaLink,guid,9a9fb109-e5f1-48cd-a899-aa99b7a62dad.aspx"&gt;CleanSweep&lt;/a&gt; to
clean out a lot of the crap created by the native build process (the last version
was mostly for managed code).&lt;br&gt;
&lt;br&gt;
I've also added very, very basic command-line support.&amp;nbsp; Right now if you provide
no command line, it will clean the directory it is run from.&amp;nbsp; If you want to
clean another folder, you pass the full path to the foilder to clean as the command
line.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=3677d214-91cc-4688-a4c1-bd64f9f1ebb0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=1f9c69a2-9658-48f6-9690-23d78574cb7d</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,1f9c69a2-9658-48f6-9690-23d78574cb7d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">So we've <a href="http://community.opennetcf.com/content/CodingCompetition.aspx">announced
this month's coding competiton</a> theme (get your keyboards fired up).<br /><br /><a href="http://community.opennetcf.com/competition/folders/sept07/default.aspx">Last
month's competiton</a> didn't have quite the effect we wanted: we only got one submission. 
Still if you consider that the goal of the competition is to get cool code out to
the developer community as a whole, then the <a href="http://community.opennetcf.com/competition/folders/sept07/entry15.aspx">FlowFx
submission</a> alone made the competition a success.  But still, we'd like to
see a bit more diverse set of entries.  In an attempt to improve things this
month we're offering prizes for multiple places (first, second and 3 runners-up) so
that no one will get discouraged and abandon all hope if they see some crazy-cool
submission early in the month (like I suspect happened with FlowFx).<br /><br />
Any other thoughts on how we can make the competition more successful (short of giving
away an <a href="http://www.xbox.com">X-Box 360</a>, a copy of <a href="http://www.halo3.com">Halo
3</a> and a 60" <a href="http://en.wikipedia.org/wiki/Plasma_display">plasma TV</a> to
play it on - that's just not in our budget)?<br /><p></p><img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=1f9c69a2-9658-48f6-9690-23d78574cb7d" /><br /><hr />
Managed Code in the Embedded World</body>
      <title>October Coding Competiton: Got Game?</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,1f9c69a2-9658-48f6-9690-23d78574cb7d.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2007/10/03/OctoberCodingCompetitonGotGame.aspx</link>
      <pubDate>Wed, 03 Oct 2007 18:24:27 GMT</pubDate>
      <description>So we've &lt;a href="http://community.opennetcf.com/content/CodingCompetition.aspx"&gt;announced
this month's coding competiton&lt;/a&gt; theme (get your keyboards fired up).&lt;br&gt;
&lt;br&gt;
&lt;a href="http://community.opennetcf.com/competition/folders/sept07/default.aspx"&gt;Last
month's competiton&lt;/a&gt; didn't have quite the effect we wanted: we only got one submission.&amp;nbsp;
Still if you consider that the goal of the competition is to get cool code out to
the developer community as a whole, then the &lt;a href="http://community.opennetcf.com/competition/folders/sept07/entry15.aspx"&gt;FlowFx
submission&lt;/a&gt; alone made the competition a success.&amp;nbsp; But still, we'd like to
see a bit more diverse set of entries.&amp;nbsp; In an attempt to improve things this
month we're offering prizes for multiple places (first, second and 3 runners-up) so
that no one will get discouraged and abandon all hope if they see some crazy-cool
submission early in the month (like I suspect happened with FlowFx).&lt;br&gt;
&lt;br&gt;
Any other thoughts on how we can make the competition more successful (short of giving
away an &lt;a href="http://www.xbox.com"&gt;X-Box 360&lt;/a&gt;, a copy of &lt;a href="http://www.halo3.com"&gt;Halo
3&lt;/a&gt; and a 60" &lt;a href="http://en.wikipedia.org/wiki/Plasma_display"&gt;plasma TV&lt;/a&gt; to
play it on - that's just not in our budget)?&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=1f9c69a2-9658-48f6-9690-23d78574cb7d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>Community</category>
      <category>OpenNETCF</category>
    </item>
    <item>
      <trackback:ping>http://blog.opennetcf.com/ctacke/Trackback.aspx?guid=56081c2f-713a-4911-a0e5-1048547e5740</trackback:ping>
      <pingback:server>http://blog.opennetcf.com/ctacke/pingback.aspx</pingback:server>
      <pingback:target>http://blog.opennetcf.com/ctacke/PermaLink,guid,56081c2f-713a-4911-a0e5-1048547e5740.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In case you've missed it, the <a href="http://community.opennetcf.com">OpenNETCF Community
Site</a> publishes articles relevent to mobile and embedded developers.  We just
published the latest entitled <em>Developing Connected Smart Device Application with
SqlClient.</em><a href="http://community.opennetcf.com/articles">Check it (and the
previous articles) out</a>.
</p>
        <img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=56081c2f-713a-4911-a0e5-1048547e5740" />
        <br />
        <hr />
Managed Code in the Embedded World</body>
      <title>New article: Smart Devices with SQL Client</title>
      <guid isPermaLink="false">http://blog.opennetcf.com/ctacke/PermaLink,guid,56081c2f-713a-4911-a0e5-1048547e5740.aspx</guid>
      <link>http://blog.opennetcf.com/ctacke/2007/09/20/NewArticleSmartDevicesWithSQLClient.aspx</link>
      <pubDate>Thu, 20 Sep 2007 22:19:52 GMT</pubDate>
      <description>&lt;p&gt;
In case you've missed it, the &lt;a href="http://community.opennetcf.com"&gt;OpenNETCF Community
Site&lt;/a&gt; publishes articles relevent to mobile and embedded developers.&amp;nbsp; We just
published the latest entitled &lt;em&gt;Developing Connected Smart Device Application with
SqlClient.&lt;/em&gt; &lt;a href="http://community.opennetcf.com/articles"&gt;Check it (and the
previous articles) out&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.opennetcf.com/ctacke/aggbug.ashx?id=56081c2f-713a-4911-a0e5-1048547e5740" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Managed Code in the Embedded World</description>
      <category>.NET Compact Framework</category>
      <category>Community</category>
    </item>
  </channel>
</rss>