我有這個問題。我在這個問題上搜索了很多站點,但他們都建議關閉所有的連接,或者只是在連接和dataReader中使用「using」。但!我的問題在於我無法打開第一個連接!我在連接點附近設置了一個斷點,並看到沒有其他連接,所以有第一個連接。這個問題,當我重拍類從靜態到辛格爾頓其開放連接rized,這裏是代碼:超時已過期。獲取連接之前超時時間已過第一次連接
public class Storage
{
private static Storage instance;
public static Storage Instance
{
get
{
if (instance == null)
{
instance = new Storage();
}
return instance;
}
}
private Storage()
{
Manager man = new Manager();
products = man.LoadProducts();
components = man.LoadComponents();
man.LoadProductComponents();
}
public Dictionary<int, Product> Products
{
get { return products; }
set { products = value; }
}
public Dictionary<int, Component> Components
{
get { return components; }
set { components = value; }
}
private Dictionary<int, Product> products;
private Dictionary<int, Component> components;
}
,這裏是一個經理構造
public Manager()
{
connection = new SqlConnection(@"Persist Security Info=False;User ID=user;Password=pass;Initial Catalog=Products;Server=(local)");
if (connection.State != ConnectionState.Open) connection.Open();
}
當異常升高,連接Closed
。任何人有想法?
UPDATE:
,如果我關掉池 - 我有"System.StackOverflowException" in System.Data.dll
在同一直線上。
就我個人而言,我會說任何涉及單身固定連接的東西本質上都是一個壞主意。但是:有多少其他地方的負載管理?特別是任何能夠激發少數經理人的事情都會產生鎖定聯繫的副作用,而他們並不希望他們關門。 – 2013-02-26 07:40:31
問題出在第一次連接,所以Manager()在一個。我試圖用lock()來創建Singleton,但它沒有幫助。 – user1947702 2013-02-26 07:47:51
並且這是*整個應用程序*中唯一的連接/管理器實例?信息是否以「從游泳池」結束? – 2013-02-26 07:48:44