作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码线程安全吗?
public static NpgsqlConnection getConnection()
{
NpgsqlConnectionStringBuilder csb = new NpgsqlConnectionStringBuilder();
csb.Host = ConfigurationManager.AppSettings["server"];
csb.Password = ConfigurationManager.AppSettings["password"];
csb.Pooling = true;
csb.UserName = ConfigurationManager.AppSettings["username"];
csb.Port = Convert.ToInt32( ConfigurationManager.AppSettings["port"]);
csb.Enlist = true;
//csb.Database = ConfigurationManager.AppSettings["databaseName"];
return new NpgsqlConnection(csb.ConnectionString);
}
TimeoutException
.
A timeout has occured. If you were establishing a connection, increase Timeout value in ConnectionString. If you were executing a command, increase the CommandTimeout value in ConnectionString or in your NpgsqlCommand object.
最佳答案
回答您的问题, NpgsqlConnection 不是线程安全的。您不应该与多个线程共享 NpgsqlConnection。
但是关于你的异常,如果你注意到,你会在调用 NpgsqlConnection.Open() 方法时得到它。在您的 getConnection() 方法中,您不会调用 Open。您正在其他地方打开连接。
现在,要在打开连接时获得此异常,您必须已达到最大连接池大小。这意味着您可能没有关闭之前打开的连接。
您必须在 NpgsqlConnection 对象中调用 close 或 dispose 才能将其返回到连接池。如果您让 NpgsqlConnection 实例超出范围,它将不会返回到池中,并将计为已使用的连接。
为了检查这是否是您的问题,您有两种可能性:
关于.net - 这个 NpgsqlConnection 工厂线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373282/
我是一名优秀的程序员,十分优秀!