この問題があります。この問題について多くのサイトをグーグル検索しましたが、すべてのサイトで、すべての接続を閉じるか、接続と dataReader で「使用」を使用するようにアドバイスされています。しかし!私の問題は、最初の接続を開くことができないということです! 接続の近くにブレークポイントを設定すると、他の接続がないことがわかりました。最初の接続があります。この問題は、静的からシングルトンへの接続を開くクラスを作り直したときに発生しました。コードは次のとおりです。
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;
}
ここに Manager コンストラクターがあります
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
. アイデアはありますか?
アップデート:
プーリングをオフにする"System.StackOverflowException" in System.Data.dll
と、同じ行になります。