C#Windows应用程序 – 许multithreading使用相同的连接?

我有一个multithreading的ac#WINDOWS应用程序。 我的理解是,在Web环境中,连接会自动汇集。 我的理解是,在Windows应用程序中,情况并非如此。 因此,对于Windows应用程序,应使用相同的连接,而不是在每次调用后关闭,而是在应用程序关闭时关闭。

我很好奇 – 我是对的吗? 如果是,两个线程是否可以使用相同的连接同时从数据库获取数据集,或者该function是否排队?

谢谢

连接池是ADO.NET的一个function。 因此,连接已经合并。 不仅在网络环境中。

http://www.ondotnet.com/pub/a/dotnet/2004/02/09/connpool.html

我的理解是,在Web环境中,连接会自动汇集。 我的理解是,在Windows应用程序中,情况并非如此。

不,这是错误的,正如m3rLinEz指出的那样。 连接总是汇集在一起​​。

因此,对于Windows应用程序,应使用相同的连接,而不是在每次调用后关闭,而是在应用程序关闭时关闭。

可以在单片WinForms应用程序中保持连接打开一段时间。 但最好在需要时使用打开/关闭连接的标准模式。 连接池意味着您不会注意到性能差异。 您的数据访问代码将与ASP.NET等服务器应用程序兼容。

如果是,两个线程是否可以使用相同的连接同时从数据库获取数据集,或者该function是否排队?

不可以.ADO.NET类(连接,命令等)不是线程安全的,不应在没有同步的线程之间共享。 但如上所述,您应该更喜欢数据访问的标准模式。

好吧 – 所以我的这个假设是通过观察引起的:当我尝试以典型的游泳池方式设置win应用程序时,我总是遇到3-5秒的延迟,同时建立了与远程服务器的真实连接。 即使我打开一个,然后关闭,下一个查询总会有这个延迟。

当服务器连接时,它显然不会为池中的每个连接建立连接。 此外,池化机制是否足够智能以获取它知道已经打开的连接,或者它是否可以简单地抓取任何随机连接?

池中的默认最大连接数是多少?