<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana-Bold;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
p.msochpdefault, li.msochpdefault, div.msochpdefault
        {mso-style-name:msochpdefault;
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
span.htmlpreformattedchar0
        {mso-style-name:htmlpreformattedchar;
        font-family:"Courier New";}
span.balloontextchar0
        {mso-style-name:balloontextchar;
        font-family:"Tahoma","sans-serif";}
span.emailstyle21
        {mso-style-name:emailstyle21;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.emailstyle22
        {mso-style-name:emailstyle22;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.emailstyle23
        {mso-style-name:emailstyle23;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.emailstyle24
        {mso-style-name:emailstyle24;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.emailstyle25
        {mso-style-name:emailstyle25;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.emailstyle26
        {mso-style-name:emailstyle26;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.emailstyle27
        {mso-style-name:emailstyle27;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle32
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Both of Romy’s suggestions are very useful.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Avoiding calling FDO using ‘a.b.c.function()’ is an important one.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Also note that MS recommends using the ‘using’ mechanism in cases such as this, where a managed object wraps a native object, specifically so that garbage collection is handled correctly.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Greg<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> fdo-users-bounces@lists.osgeo.org [mailto:fdo-users-bounces@lists.osgeo.org]
<b>On Behalf Of </b>Romica Dascalescu<br>
<b>Sent:</b> Friday, February 17, 2012 9:33 AM<br>
<b>To:</b> FDO Users Mail List<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">I'm not sure this will fix your issue, however is nice to know.<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">I would avoid using FDO #C API like below (I'm not sure if you do use such code style):<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">int cnt = connection.ExpressionCapabilities.Functions.Count;<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> <o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">You should do it like:<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">IExpressionCapabilities expCap = connection.ExpressionCapabilities;<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">FunctionDefinitionCollection fcts = expCap.Functions;<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">int cnt = fcts.Count;<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> <o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Even try adding using(){}<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> <o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">I got crashes in case I did not avoid this type of code...
<o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> <o:p></o:p></span></p>
<p><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Romy<o:p></o:p></span></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span lang="EN-CA" style="font-size:12.0pt;font-family:"Times New Roman","serif";color:black">
<hr size="2" width="100%" align="center">
</span></div>
<div id="divRpF245549">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span lang="EN-CA" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org">fdo-users-bounces@lists.osgeo.org</a> [fdo-users-bounces@lists.osgeo.org] on behalf of Kyle Fransham [franshamk@superna.net]<br>
<b>Sent:</b> Friday, February 17, 2012 8:12 AM<br>
<b>To:</b> 'FDO Users Mail List'<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="font-size:12.0pt;font-family:"Times New Roman","serif";color:black"><o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Hi Romy, Greg,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Thanks for the x64 tip. Unfortunately, calling this method didn’t seem to solve my problem. (The exception still occurs.) I did ensure that this method was called on app startup, before any FDO
objects were created. Could it be that it needs to be compiled into the C# dll to be effective? If so, is there any place I could download the C# api to roll my own libraries with this function included? Or maybe you have other ideas? Any suggestions you
could give me would be greatly appreciated.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Thanks again for all your help so far.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Kyle</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Romica Dascalescu<br>
<b>Sent:</b> February-16-12 15:37<br>
<b>To:</b> FDO Users Mail List<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Be aware that the name is different on x64 platform, so you would need something like:</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">[DllImport("FDOCommon.dll", EntryPoint = "...x64 name", CallingConvention = CallingConvention.ThisCall)]</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">private static extern void EnableGlobalThreadLocking64(bool enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">[DllImport("FDOCommon.dll", EntryPoint = "...x86 name", CallingConvention = CallingConvention.ThisCall)]</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">private static extern void EnableGlobalThreadLocking32(bool enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">public static void EnableGlobalThreadLocking(bool enabled)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">{</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> if (IntPtr.Size == 8) </span>
<span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> EnableGlobalThreadLocking64(enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> else</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> EnableGlobalThreadLocking32(enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Romy.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org" target="_blank">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]" target="_blank">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Kyle Fransham<br>
<b>Sent:</b> Thursday, February 16, 2012 2:51 PM<br>
<b>To:</b> 'FDO Users Mail List'<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Turns out that I had to explicitly specify the entry point:</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> [</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">DllImport</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#A31515">"FDOCommon.dll"</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">,
EntryPoint = </span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#A31515">"?EnableGlobalThreadLocking@FdoIDisposable@@SAX_N@Z"</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">, CallingConvention =
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">CallingConvention</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.ThisCall)]</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">extern</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> EnableGlobalThreadLocking(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">bool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">And this is now working. Case closed!</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Thanks again for all your help.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Kyle</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org" target="_blank">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]" target="_blank">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Greg Boone<br>
<b>Sent:</b> February-16-12 14:41<br>
<b>To:</b> FDO Users Mail List<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Your code segment looks ok, but I have not tried executing it in that manner.
</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">It is not included in the C# API.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Greg</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org" target="_blank">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]" target="_blank">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Kyle Fransham<br>
<b>Sent:</b> Thursday, February 16, 2012 2:32 PM<br>
<b>To:</b> 'FDO Users Mail List'<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Hi Greg,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:#1F497D">Great, thanks for the quick answer. So, to call the function from C#, I would do something like:</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">[</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">DllImport</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#A31515">"FDOCommon.dll"</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">)]</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">extern</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> EnableGlobalThreadLocking(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">bool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
enabled);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">Correct? Or is it already included somewhere in the C# provider?</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">Thanks,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">Kyle</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org" target="_blank">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]" target="_blank">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Greg Boone<br>
<b>Sent:</b> February-16-12 13:50<br>
<b>To:</b> FDO Users Mail List<br>
<b>Subject:</b> RE: [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Kyle,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Yes, this is a known issue. Using, and later disposing, FDO objects across multiple threads can lead to an exception.
</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">When you application starts up, what you need to invoke is the following method (C++)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<pre style="background:white"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> FdoIDisposable:EnableGlobalThreadLocking(true);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></pre>
<p class="MsoNormal" style="background:white"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="color:#1F497D">Located in: ….\FDO\Fdo\Unmanaged\Inc\Common\IDisposable.h</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="color:#1F497D">Regards,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="background:white"><span style="color:#1F497D">Greg</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:fdo-users-bounces@lists.osgeo.org" target="_blank">fdo-users-bounces@lists.osgeo.org</a>
<a href="mailto:[mailto:fdo-users-bounces@lists.osgeo.org]" target="_blank">[mailto:fdo-users-bounces@lists.osgeo.org]</a>
<b>On Behalf Of </b>Kyle Fransham<br>
<b>Sent:</b> Thursday, February 16, 2012 1:09 PM<br>
<b>To:</b> <a href="mailto:fdo-users@lists.osgeo.org" target="_blank">fdo-users@lists.osgeo.org</a><br>
<b>Subject:</b> [fdo-users] .NET Connection Pooling</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">I’m trying to implement a connection pool for a C# .NET project that uses FDO backed by MySQL 5.5, and I’m running into a bit of trouble. I have a static pool of OSGeo.FDO.Connection.IConnection objects
that I pass off to threads as they request them. When the thread is done with the connection, it returns it to the pool.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Before the pool gives out a connection, it does a simple check by issuing a “SELECT 1” and if all is well, the connection gets sent out. If the command fails, the connection is closed, and the next
connection in the pool is tested. If there are no valid connections in the pool, a new one is leased out. This all works fine, for a while. After a period of time, though, my app pool throws an unhandled exception that I believe is coming from the finalize
thread. All of my statements are encased in try-catch blocks, so I think that there is some object that’s being disposed of by the garbage collector that’s causing the error to occur. But I’m not sure.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">I’ve appended the exception and the code for the connection pool to this e-mail… Does anyone see if I’m doing something completely wrong? Any suggestions on what to try next?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Thanks in advance,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Kyle Fransham<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">******************************************************************<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Here is the exception that I see in the debugger:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Message: “Connection not established”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Stack Trace: <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> at OSGeo.FDO.Runtime.Disposable.ReleaseUnmanagedObject()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> at OSGeo.FDO.Runtime.Disposable.!Disposable()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> at OSGeo.FDO.Runtime.Disposable.Dispose(Boolean )<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> at OSGeo.FDO.Runtime.Disposable.Finalize()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">*******************************************************************<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black">Here is the connection pool code:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System.Collections.Concurrent;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System.Linq;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System.Web;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> OSGeo.FDO.Connections;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System.Security.Permissions;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">using</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> System.Threading;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">namespace</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> GVFFDOProvider</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">{</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">sealed</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">class</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConnectionPool</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #region</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Member Variables</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">readonly</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> n_cached_connections =</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Convert</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.ToInt32(Properties.</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Settings</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.Default.number_of_cached_connections);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConcurrentQueue</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"><</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">>
pool;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">GVFInterfaces</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> m_gvfinterfaces =</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">GVFInterfaces</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.CreateInstance(</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">AppDomain</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.CurrentDomain.BaseDirectory
+ </span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#A31515">"GVFExceptionLog.txt"</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #endregion</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #region</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Constructors</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"><summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green"> The following class implements a thread-safe singleton pattern.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"></summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">readonly</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConnectionPool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> instance =
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">new</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConnectionPool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">();</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> ConnectionPool()</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> pool =
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">new</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConcurrentQueue</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"><</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">>();</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">for</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> (</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
i = 0; i < n_cached_connections; i++)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> pool.Enqueue(GetNewConnection());</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">ConnectionPool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Instance</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">get</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> instance;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #endregion</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #region</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Private Functions</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">bool</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> ConnectionIsAlive(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
connection)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">try</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> (m_gvfinterfaces.TestConnection(connection))</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">true</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> connection.Close();</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">catch</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">// Connection is closed. Return false;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">false</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> GetNewConnection()</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> m_gvfinterfaces</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> .GetConnection(Properties.</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Settings</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.Default.fdo_user,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Properties.</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Settings</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.Default.fdo_password,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Properties.</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Settings</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.Default.fdo_service,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Properties.</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">Settings</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">.Default.fdo_datastore,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">false</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #endregion</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #region</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> Public Functions</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"><summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green"> Gets a connection from the pool if one is available and alive,</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green"> or returns a new connection.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"></summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"><returns></returns></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> GetConnection()</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> connection;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">try</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">while</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> (pool.Count() > 0)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> (pool.TryDequeue(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">out</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
connection) && ConnectionIsAlive(connection))</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> connection;</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">catch</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">// Do nothing, just return a new connection.
</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">return</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> GetNewConnection();</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"><summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green"> Returns a connection to the pool.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"></summary></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:green">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:gray"><param name="connection"></param></span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> ReturnConnection(</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:#2B91AF">IConnection</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
connection)</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">
</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue">if</span><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> (pool.Count < n_cached_connections && ConnectionIsAlive(connection))</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> {</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> pool.Enqueue(connection);</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }
</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:blue"> #endregion</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black"> }</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:9.5pt;font-family:Consolas;color:black">}</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"><a href="http://www.superna.net/" target="_blank"></a></span><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_s1026" type="#_x0000_t75" alt="Description: Description: Description: Description: email" href="http://www.superna.net/" target=""_blank"" style='position:absolute;margin-left:0;margin-top:0;width:119.25pt;height:30.75pt;z-index:251658240;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:left;mso-position-horizontal-relative:text;mso-position-vertical-relative:line' o:allowoverlap="f" o:button="t">
<v:imagedata src="cid:image001.jpg@01CCED5C.714149A0" o:title="image003.jpg@01CCED4B" />
<w:wrap type="square"/>
</v:shape><![endif]--><![if !vml]><a href="http://www.superna.net/" target=""_blank""><img border="0" width="159" height="41" src="cid:image001.jpg@01CCED5C.714149A0" align="left" hspace="12" alt="Description: Description: Description: Description: email" v:shapes="_x0000_s1026"></a><![endif]><span style="color:black"><a href="http://www.superna.net/" target="_blank"></a></span><span lang="EN-CA" style="color:black">KYLE
FRANSHAM</span><b><span lang="EN-CA" style="font-size:8.0pt;font-family:Verdana-Bold;color:#231F20"> Software Developer</span></b><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="font-size:8.0pt;font-family:"Verdana","sans-serif";color:#231F20">613-729-1100 ext. 330 (w) |
</span><u><span lang="EN-CA" style="font-size:8.0pt;font-family:"Verdana","sans-serif";color:black"><a href="http://www.superna.net/" target="_blank">www.superna.net</a></span></u><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;color:#E36C0A">Superna </span>
</b><span style="font-size:10.0pt;color:black">is located at 300 Terry Fox Drive, Unit 700, Kanata, Ontario K2K 0E3.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span lang="EN-CA" style="font-size:8.0pt;color:black">
<hr size="2" width="100%" align="center">
</span></div>
<p class="MsoNormal"><b><span style="font-size:8.0pt;color:black">CONFIDENTIALITY NOTICE</span></b><span style="font-size:8.0pt;color:black">: The information contained in this email is privileged and confidential and intended only for the use of the individual
or entity to whom it is addressed. If you are not the intended recipient, you are hereby notified that any distribution, copying, or disclosure or taking of any action in reliance on the contents of this transmission is strictly prohibited and review by any
individual other than the intended recipient shall not constitute waiver of privilege. If you receive this message in error, please notify the sender immediately at 613-729-1100 and destroy the original message and all copies. Thank you.</span><span lang="EN-CA" style="color:black"><o:p></o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-size:8.0pt;color:black">
<hr size="2" width="100%" align="center">
</span></div>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-CA" style="color:black"> <o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>