<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Tahoma;
}
@font-face {
        font-family: Consolas;
}
@font-face {
        font-family: Verdana;
}
@font-face {
        font-family: Verdana-Bold;
}
@page WordSection1 {margin: 72.0pt 72.0pt 72.0pt 72.0pt; }
P.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
LI.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
DIV.MsoNormal {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Calibri","sans-serif"; FONT-SIZE: 11pt
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
PRE {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"; FONT-SIZE: 10pt
}
P.MsoAcetate {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
LI.MsoAcetate {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
DIV.MsoAcetate {
        MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
SPAN.HTMLPreformattedChar {
        FONT-FAMILY: "Courier New"
}
SPAN.BalloonTextChar {
        FONT-FAMILY: "Tahoma","sans-serif"
}
SPAN.EmailStyle21 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: windowtext
}
SPAN.EmailStyle22 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
SPAN.EmailStyle23 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
SPAN.EmailStyle24 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
SPAN.EmailStyle25 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
SPAN.EmailStyle26 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
SPAN.EmailStyle27 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
.MsoChpDefault {
        FONT-SIZE: 10pt
}
</style><style id="owaParaStyle">P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
</style>
</head>
<body lang="EN-CA" vlink="purple" link="blue" fPStyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<p>I'm not sure this will fix your issue, however is nice to know.</p>
<p>I would avoid using FDO<a></a><a></a> #C API like below (I'm not sure if you do use such code style):</p>
<p><a></a><a></a>int cnt<a></a><a></a> = connection.ExpressionCapabilities.Functions.Count<a></a><a></a>;</p>
<p> </p>
<p>You should do it like:</p>
<p><a></a><a></a>IExpressionCapabilities expCap<a></a><a></a> = connection.ExpressionCapabilities<a></a><a></a>;</p>
<p><a></a><a></a>FunctionDefinitionCollection fcts<a></a><a></a> = expCap.Functions<a></a><a></a>;</p>
<p><a></a><a></a>int cnt<a></a><a></a> = fcts.Count<a></a><a></a>;</p>
<p> </p>
<p>Even try adding using(){}</p>
<p> </p>
<p>I got crashes in case I did not avoid this type of code... </p>
<p> </p>
<p><a>Romy</a></p>
<div style="FONT-FAMILY: Times New Roman; COLOR: #000000; FONT-SIZE: 16px">
<hr tabindex="-1">
<div style="DIRECTION: ltr" id="divRpF245549"><font color="#000000" size="2" face="Tahoma"><b>From:</b> fdo-users-bounces@lists.osgeo.org [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<br>
</font><br>
</div>
<div></div>
<div>
<div class="WordSection1">
<p class="MsoNormal"><span style="COLOR: #1f497d">Hi Romy, Greg,</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span 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></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Thanks again for all your help so far.</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Kyle</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: blue 1.5pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 4pt; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm">
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US"> fdo-users-bounces@lists.osgeo.org [mailto:fdo-users-bounces@lists.osgeo.org]
<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></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Be aware that the name is different on x64 platform, so you would need something like:</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">[DllImport("FDOCommon.dll", EntryPoint = "...x64 name", CallingConvention = CallingConvention.ThisCall)]</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">private static extern void EnableGlobalThreadLocking64(bool enabled);</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">[DllImport("FDOCommon.dll", EntryPoint = "...x86 name", CallingConvention = CallingConvention.ThisCall)]</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">private static extern void EnableGlobalThreadLocking32(bool enabled);</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">public static void EnableGlobalThreadLocking(bool enabled)</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">{</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"> if (IntPtr.Size == 8)
</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"> EnableGlobalThreadLocking64(enabled);</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"> else</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"> EnableGlobalThreadLocking32(enabled);</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Romy.</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">
<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></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Turns out that I had to explicitly specify the entry point:</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> [<span style="COLOR: #2b91af">DllImport</span>(<span style="COLOR: #a31515">"FDOCommon.dll"</span>, EntryPoint =
<span style="COLOR: #a31515">"?EnableGlobalThreadLocking@FdoIDisposable@@SAX_N@Z"</span>, CallingConvention =
<span style="COLOR: #2b91af">CallingConvention</span>.ThisCall)]</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">public</span> <span style="COLOR: blue">static</span> <span style="COLOR: blue">
extern</span> <span style="COLOR: blue">void</span> EnableGlobalThreadLocking(<span style="COLOR: blue">bool</span> enabled);</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">And this is now working. Case closed!</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Thanks again for all your help.</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Kyle</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: blue 1.5pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 4pt; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm">
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">
<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></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Your code segment looks ok, but I have not tried executing it in that manner.
</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">It is not included in the C# API.</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Greg</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">
<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></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Hi Greg,</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d">Great, thanks for the quick answer. So, to call the function from C#, I would do something like:</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">[<span style="COLOR: #2b91af">DllImport</span>(<span style="COLOR: #a31515">"FDOCommon.dll"</span>)]</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">public</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">static</span> <span style="COLOR: blue">extern</span> <span style="COLOR: blue">
void</span> EnableGlobalThreadLocking(<span style="COLOR: blue">bool</span> enabled);</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">Correct? Or is it already included somewhere in the C# provider?</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">Thanks,</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">Kyle</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: blue 1.5pt solid; PADDING-BOTTOM: 0cm; PADDING-LEFT: 4pt; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0cm">
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">
<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></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Hi Kyle,</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Yes, this is a known issue. Using, and later disposing, FDO objects across multiple threads can lead to an exception.
</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">When you application starts up, what you need to invoke is the following method (C++)</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<pre style="BACKGROUND: white"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt" lang="EN-US"> FdoIDisposable:EnableGlobalThreadLocking(true);</span></pre>
<p style="BACKGROUND: white" class="MsoNormal"><span style="COLOR: black" lang="EN-US"></span> </p>
<p style="BACKGROUND: white" class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Located in: ….\FDO\Fdo\Unmanaged\Inc\Common\IDisposable.h</span></p>
<p style="BACKGROUND: white" class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<p style="BACKGROUND: white" class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Regards,</span></p>
<p style="BACKGROUND: white" class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US">Greg</span></p>
<p class="MsoNormal"><span style="COLOR: #1f497d" lang="EN-US"></span> </p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt" lang="EN-US">
<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></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"></span> </p>
<p class="MsoNormal">Hello,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">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.
</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">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.
</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">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?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thanks in advance,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Kyle Fransham</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">******************************************************************</p>
<p class="MsoNormal">Here is the exception that I see in the debugger:</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Message: “Connection not established”</p>
<p class="MsoNormal">Stack Trace: </p>
<p class="MsoNormal"> at OSGeo.FDO.Runtime.Disposable.ReleaseUnmanagedObject()</p>
<p class="MsoNormal"> at OSGeo.FDO.Runtime.Disposable.!Disposable()</p>
<p class="MsoNormal"> at OSGeo.FDO.Runtime.Disposable.Dispose(Boolean )</p>
<p class="MsoNormal"> at OSGeo.FDO.Runtime.Disposable.Finalize()</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">*******************************************************************</p>
<p class="MsoNormal">Here is the connection pool code:</p>
<p class="MsoNormal"> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System.Collections.Concurrent;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System.Linq;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System.Web;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> OSGeo.FDO.Connections;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System.Security.Permissions;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">using</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> System.Threading;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt">namespace</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> GVFFDOProvider</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">{</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">public</span> <span style="COLOR: blue">sealed</span> <span style="COLOR: blue">
class</span> <span style="COLOR: #2b91af">ConnectionPool</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #region</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Member Variables</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: blue">static</span> <span style="COLOR: blue">
readonly</span> <span style="COLOR: blue">int</span> n_cached_connections =</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: #2b91af">Convert</span>.ToInt32(Properties.<span style="COLOR: #2b91af">Settings</span>.Default.number_of_cached_connections);</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: #2b91af">ConcurrentQueue</span><<span style="COLOR: #2b91af">IConnection</span>> pool;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: #2b91af">GVFInterfaces</span> m_gvfinterfaces =</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: #2b91af">GVFInterfaces</span>.CreateInstance(</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> <span style="COLOR: #2b91af">AppDomain</span>.CurrentDomain.BaseDirectory +
<span style="COLOR: #a31515">"GVFExceptionLog.txt"</span>);</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #endregion</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #region</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Constructors</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"><summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> The following class implements a thread-safe singleton pattern.</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"></summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: blue">static</span> <span style="COLOR: blue">
readonly</span> <span style="COLOR: #2b91af">ConnectionPool</span> instance = <span style="COLOR: blue">
new</span> <span style="COLOR: #2b91af">ConnectionPool</span>();</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> ConnectionPool()</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> pool =
<span style="COLOR: blue">new</span> <span style="COLOR: #2b91af">ConcurrentQueue</span><<span style="COLOR: #2b91af">IConnection</span>>();</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">for</span> (<span style="COLOR: blue">int</span> i = 0; i < n_cached_connections; i++)</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> pool.Enqueue(GetNewConnection());</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">public</span> <span style="COLOR: blue">static</span> <span style="COLOR: #2b91af">
ConnectionPool</span> Instance</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">get</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> instance;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #endregion</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #region</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Private Functions</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: blue">bool</span> ConnectionIsAlive(<span style="COLOR: #2b91af">IConnection</span> connection)</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">try</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">if</span> (m_gvfinterfaces.TestConnection(connection))</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> <span style="COLOR: blue">true</span>;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> connection.Close();</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">catch</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: green">// Connection is closed. Return false;</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> <span style="COLOR: blue">false</span>;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">private</span> <span style="COLOR: #2b91af">IConnection</span> GetNewConnection()</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> m_gvfinterfaces</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> .GetConnection(Properties.<span style="COLOR: #2b91af">Settings</span>.Default.fdo_user,</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Properties.<span style="COLOR: #2b91af">Settings</span>.Default.fdo_password,</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Properties.<span style="COLOR: #2b91af">Settings</span>.Default.fdo_service,</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Properties.<span style="COLOR: #2b91af">Settings</span>.Default.fdo_datastore,</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">false</span>);</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #endregion</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #region</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> Public Functions</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"><summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> Gets a connection from the pool if one is available and alive,</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> or returns a new connection.</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"></summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"><returns></returns></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">public</span> <span style="COLOR: #2b91af">IConnection</span> GetConnection()</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: #2b91af">IConnection</span> connection;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">try</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">while</span> (pool.Count() > 0)</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">if</span> (pool.TryDequeue(<span style="COLOR: blue">out</span> connection) && ConnectionIsAlive(connection))</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> connection;</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">catch</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: green">// Do nothing, just return a new connection. </span>
</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">return</span> GetNewConnection();</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"><summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> Returns a connection to the pool.</span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"></summary></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray"><param name="connection"></param></span></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">public</span> <span style="COLOR: blue">void</span> ReturnConnection(<span style="COLOR: #2b91af">IConnection</span> connection)</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">
<span style="COLOR: blue">if</span> (pool.Count < n_cached_connections && ConnectionIsAlive(connection))</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> {</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> pool.Enqueue(connection);</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }
</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"> #endregion</span><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"> }</span></p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"></span> </p>
<p style="TEXT-AUTOSPACE: " class="MsoNormal"><span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt">}</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><a href="http://www.superna.net/" target="_blank"><img border="0" hspace="12" alt="Description: Description: Description: Description: email" align="left" src="cid:image003.jpg@01CCED4B.1673A6F0" width="159" height="41"></a>KYLE FRANSHAM<b><span style="FONT-FAMILY: Verdana-Bold; COLOR: #231f20; FONT-SIZE: 8pt">
Software Developer</span></b><span style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #231f20; FONT-SIZE: 8pt"></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #231f20; FONT-SIZE: 8pt">613-729-1100 ext. 330 (w) |
</span><u><span style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8pt"><a href="http://www.superna.net/" target="_blank">www.superna.net</a></span></u><span style="COLOR: #1f497d"></span></p>
<p class="MsoNormal"><b><span style="COLOR: #e36c0a; FONT-SIZE: 10pt" lang="EN-US">Superna
</span></b><span style="FONT-SIZE: 10pt" lang="EN-US">is located at 300 Terry Fox Drive, Unit 700, Kanata, Ontario K2K 0E3.<b><span style="COLOR: #e36c0a"></span></b></span></p>
<div style="TEXT-ALIGN: center" class="MsoNormal" align="center"><span style="COLOR: black; FONT-SIZE: 8pt">
<hr align="center" size="2" width="100%">
</span></div>
<p class="MsoNormal"><b><span style="COLOR: black; FONT-SIZE: 8pt" lang="EN-US">CONFIDENTIALITY NOTICE</span></b><span style="COLOR: black; FONT-SIZE: 8pt" lang="EN-US">: 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 style="FONT-SIZE: 8pt" lang="EN-US"></span></p>
<div style="TEXT-ALIGN: center" class="MsoNormal" align="center"><span style="FONT-SIZE: 8pt" lang="EN-US">
<hr align="center" size="2" width="100%">
</span></div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>